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
メソッドのチェックボックスをオンにし、[終了]をクリックします。
初回のみ「JUnit3がビルド・パスにありません。追加しますか?」と表示され、処理選択が求められます。「次のアクションを実行」が選択されていることを確認して[OK]をクリックします。
テストケース「HelloFunc2Test
」クラスが自動作成され、エディター・ビューに表示されます。
対象のメソッドごとにテスト用のメソッドが作成されています。