2012年3月13日火曜日

JUnit入門―導入・実行編(Eclipse ver.)

まずは、JUnitを使うための環境作りについて見ていきます。
JUnitを利用するためには、IDEを利用する方法やビルドツールを利用する方法などがあります。
今回は、最も簡単な利用方法だと思われるEclipseを使った方法を試してみます。

使用している環境はPleiades All in One 3.7.2(Eclipse3.7.2をベースに日本語化したもの)です。

・JUnitの導入

Eclipseには最初からJUnitが含まれているため、インストールの必要はありません。
また、JUnitのテストクラスを実行して結果を確認するためのプラグインも含まれていて、至れり尽くせりです。
そのため、ビルドパスはJUnitのライブラリを追加して、テストクラスを作成すればすぐに実行して結果を確認することができます。

ということで、まずはプロジェクトにJUnitのライブラリを追加します。
(プロジェクトはすでにあるものとします。)
パッケージ・エクスプローラーのプロジェクトを右クリックして、「ビルド・パス→ライブラリの追加」を選択すると、以下のようなライブラリ選択画面になります。
そこで、JUnitを選択して次に進みます。

JUnitライブラリの追加(1)
次に進むと、ライブラリのバージョンを選択する画面になります。
ここではJUnit4を選択しています。
今回の環境ではJUnitのソースは含まれていないので、ソース・ロケーションが「見つかりません」となっているようです。
これで完了を押せばOKです。

JUnitライブラリの追加(2) バージョンの選択

・テストの実行

JUnitライブラリの準備ができたので、次にテストクラスを作って実行してみます。
テストクラスの作成も、IDEによるサポートがあるため、簡単に作ることができます。

ここではテスト対象のクラスとして、以下のCalcクラスがプロジェクトに含まれているとします。


パッケージ・エクスプローラー上のCalcクラスを右クリックして、「新規→JUnitテスト・ケース」と選択すると、以下のテスト・ケース作成画面になります。
この時点で、一通りのデフォルト値が入力された状態になっています。
名前はテスト対象のクラスに”Test”と付けたものになり、テスト元クラスが先程のCalcクラスになっています。
クラスを選択せずに新規作成すると、名前やテスト元クラスのデフォルト値は空になります。

また、メソッドのスタブを作成するかどうかもここで選ぶことができます。
以下の画面では、setUpメソッドとtearDownメソッドを選択しています。

JUnitテスト・ケース(テストクラス)の追加

次に進むと、テストの対象とするメソッドを選択する画面になります。
テスト対象クラスのメソッド一覧が表示されているので、どれをテストするかを選択します。
以下の画面では、Calcクラスのsumメソッドのみを選択しています。
これで完了を押すと、テストクラスがプロジェクトに追加されます。

JUnitテスト・ケースでの対象メソッド選択
追加されたテストクラスは以下のようなものになっているはずです。(画像右側のCalcTest.java)
setUp、tearDown、testSumの3つのメソッドがあります。
テストメソッドは、対象のメソッド名の前に”test”と付けた名前になります。
中身はまだ実装されていないので、必ず失敗するコードが書かれています。

このテストクラスを実行するためには、メニューから「実行→実行」を選択します。
もしくは「Ctrl+F11」でも実行できます。
実行すると、左側にJUnitの実行結果が現れます。
今回は1つのテストケース(メソッド)を実行し、そのテストが失敗していることを示しています。
失敗すると、バーが赤く表示されます。

テスト・ケースの実行(失敗)
では、次にテストケースの中身を以下のように書き換えてみます。


詳細は省略しますが、Calcクラスのsumメソッドを使って、「sum(1,2)」が正しく「3」になるかどうかを確認するように書き換えています。
これをもう一度実行すると、今度はバーの部分が緑色に変わります。
これで、「sum(1,2)=1+2=3」が確認できたことになります。

テスト・ケースの実行(成功)
以上のように、Ecpliseではかなりお手軽にJUnitの導入と実行ができるようになっています。

2012年3月3日土曜日

Flickrのテスト

Flickrの写真を表示するテスト。
自宅の側で撮った月。

P1140439
GF1  LUMIX G VARIO 45-200/F4.0-5.6 F5.6 1/200

JUnit入門―参考情報まとめ編


最近お勉強中のJUnitについて、ちびちびとまとめていきます。

JUnitとは

JUnitとはJava用のユニットテストフレームワークです。
3.x系までと4.x系でテストクラスの書き方や実行の方法が異なっていて、
最新版は4.10です。(2012/3/2現在)
ビルドツール(AntやMavenなど)やIDEなどを始め、様々なツールが連携していて、
Java界隈ではデファクトスタンダードのようです。

以下、参考情報まとめ。

ところで、最新の機能について知りたい場合には、リリースノートかソースコードを見るしかないんでしょうか…

公式系

本家。最新情報等はこちらから。

http://www.junit.org/

レポジトリ。Githubにあります。jarなどのダウンロードもこちらから。
https://github.com/KentBeck/junit

本家のスタートガイドなど。Junit Cookbookに一応簡単な例が載っています。
情報量はいまいちです。
http://junit.sourceforge.net/

JUnit4系

4.x系でのテストクラスの要素についてまとめられています。
最初に読むのがおすすめです。
http://d.hatena.ne.jp/oknknic/20111030/1319943307

上記の要素について、より詳細な解説があります。
http://www.ibm.com/developerworks/jp/java/library/j-junit4/

4.x系から導入されたアサーションメソッド(assertThatとMatcher)の例がたくさん載っています。
モダンな書き方ならこちらでしょうか。
http://d.hatena.ne.jp/daisuke-m/20090710/1247181113

JUnit3系

3.x系について、インストールからテストクラスの書き方までまとめられています。
初心者向けな感じです。
http://www.techscore.com/tech/Java/Others/JUnit/index/


3.x系でのJUnitの使い方から、JUnitを使ったTDDのサンプル、JUnitのTipsなどが書かれています。
3.x系がベースですが、今でもかなり参考になるんではないでしょうか。
長めなのでじっくり読む系です。
http://www.javainthebox.net/publication/200401JP34/junit.html

JUnit(3.x系)を使ったTDDの実況中継の記事「車窓からのTDD」です。(※pdf)
読み物系ですが、TDDのノウハウが詰まってます。
http://objectclub.jp/technicaldoc/testing/stack_tdd.pdf

参考文献

「現場で使えるソフトウェアテスト Java編」
JUnit以外にも、テストで使える様々なツールについて解説されています。
さらには、テスト設計の技法も解説されていて、
Java系以外のテストエンジニアにもおすすめです。
http://www.amazon.co.jp/gp/product/4798114634/

「テスト駆動開発入門」
JUnitの開発者Kent Beck氏によるTDDの入門書。
http://www.amazon.co.jp/gp/product/4894717115/