Eclipseのテスト支援機能 - JUnit(1)
Eclipseに標準装備されている単体テスト支援機能がJUnitです。JUnitはJavaプログラムの単体テストを自動化するツールで、特定のメソッドだけをテストしたり、複数のテストを一気に行うこともできます。Eclipseバージョン3.4.1にはJUnit3とJUnit4が用意されており、多くの機能がありますが、今回は「JUnit3による単体テスト用のテストケースの自動作成と利用」の基礎を紹介します。
JUnitのテストケースとは、テストしたいクラスに記述されたメソッドに対応して、テスト用のメソッドを作成した特殊なクラスです。このクラスは自動的に作成が可能で、junit.framework.TestCaseクラスのサブクラスになります。
では、説明用に、テストしたいクラスを用意します。デバッグ支援機能の説明に用いたHelloFuncクラスをコピーしてHelloFunc2クラスとし(パッケージ・エクスプローラー上で元のクラスを右クリックして「コピー(C)」し、パッケージを右クリックして「貼り付け(P)」を実行すると「名前の競合」ダイヤログが表示されるので新しい名前を入力する)、値がゼロである要素数を返すcountZero(int[])メソッドを追加します。しかし、このメソッドには要素[0]を数えないというバグを仕込んでおきます。
// HelloFunc2クラス(HelloFunc2.java)
package hellopac;
public class HelloFunc2 {
// 整数の配列を受け取って、その総和を返す
int sumArray(int[] p){
for(int i = 1; i < p.length; i++){
p[0] += p[i]; // 各要素の値を足しこむ
}
return p[0]; // 総和を返す
}
// 整数の配列を受け取って、値がゼロである要素数を返す
int countZero(int[] p){
int count = 0;
for(int i = 1; i < p.length; i++) // ここにバグがある
if(p[i] == 0) count++; // ゼロである要素を数える
return count; // 要素数を返す
}
}
単体テスト用のテストケースの自動作成
では、JUnitを用いて、単体テスト用のテストケースを自動作成します。パッケージエクスプローラーで、テスト対象のHelloFunc2クラスを右クリックし、[新規(W)]-[JUnitテスト・ケース]を実行します。
すると「新規JUnitテスト・ケース」ウィンドウが表示されます。初回は「スーパー・クラスが存在しません」という警告が出ますが、これはJUnit3ライブラリーがビルドパス(ビルド時に検索されるフォルダの一覧)に含まれていないためです。後ほど指定するので、無視して構いません。テスト元クラスが「hellopac.HelloFunc2」であることを確認して[次へ]をクリックします。
テストメソッドの選択画面になりますので、今回の対象であるsumArrayメソッドと、countZeroメソッドのチェックボックスをオンにし、[終了]をクリックします。
![図23:sumArrayメソッドと、countZeroメソッドのチェックボックスをオンにし、[終了]をクリック](http://cz-cdn.shoeisha.jp/static/images/article/3612/23.gif)
初回のみ「JUnit3がビルド・パスにありません。追加しますか?」と表示され、処理選択が求められます。「次のアクションを実行」が選択されていることを確認して[OK]をクリックします。
![図24:「次のアクションを実行」が選択されていることを確認して[OK]をクリック](http://cz-cdn.shoeisha.jp/static/images/article/3612/24.gif)
テストケース「HelloFunc2Test」クラスが自動作成され、エディター・ビューに表示されます。

対象のメソッドごとにテスト用のメソッドが作成されています。

![図21:[新規(W)]-[JUnitテスト・ケース]を実行](http://cz-cdn.shoeisha.jp/static/images/article/3612/21.gif)
![図22:「新規JUnitテスト・ケース」ウィンドウで[次へ]をクリック](http://cz-cdn.shoeisha.jp/static/images/article/3612/22.gif)