Eclipseのテスト支援機能 - JUnit(2)
アサートメソッドの記述
自動作成されたテストケースのテスト用のメソッドに、アサートメソッドを記入してテストケースを完成します。アサートメソッドとは「こういう値を与えたら、こういう結果になるべきだ」というようにテスト基準を記述するものです。今回はsumArray
メソッドには「{1, 2, 3}を与えたら、6が返ってくる
」を、countZero
メソッドは「{0, 0, 0}を与えたら、3が返ってくる
」をアサートメソッドにします。具体的な記述例は次のようになります。
// HelloFunc2Testクラス(HelloFunc2Test.java) package hellopac; import junit.framework.TestCase; public class HelloFunc2Test extends TestCase { public void testSumArray() { // fail("まだ実装されていません"); // 削除 HelloFunc2 hf2 = new HelloFunc2(); // 追加 //「{1,2,3}を与えたら、6が返ってくる」のが正しい assertEquals("1、2、3の和", 6, hf2.sumArray(new int[]{1, 2, 3})); // 追加 } public void testCountZero() { // fail("まだ実装されていません"); // 削除 HelloFunc2 hf2 = new HelloFunc2(); //「{0,0,0}を与えたら、3が返ってくる」のが正しい assertEquals("0が3個ある", 3, hf2.countZero(new int[]{0, 0, 0})); // 追加 } }
assertEquals(String, int, int)
メソッドはjunit.framework.Assert
クラスで定義されており、第2パラメータに期待される値を、第3パラメータに値を返すメソッドの呼び出しを記述します。これらが不一致の場合、第1パラメータに指定された文字列が障害トレースに出力されます。
テストケースの実行
準備ができたテストケースを試行するために、パッケージエクスプローラーで、HelloFunc2Testクラスを右クリックし、[実行(R)]-[JUnitテスト]を実行します。
JUnitビューが表示され、2つのテストが完了したことが示されます。2つめの「testCountZero
」が失敗しているので、障害トレース欄を確認すると「0が3個ある expected:<3> but was:<2>
」とあります。つまり、アサートメソッドで「3が返ってくるのが正しい
」と指定されているのに「2
」が戻されたことが分かります。
以上のように、JUnitを用いることで各メソッドが仕様どおりの動作をするかどうかを効率的にテストできます。
まとめ
今回の説明で「デバッグやテストを支援する機能」の初歩を理解できたと思います。実際にはたくさんの機能がありますが、必要な機能から順に理解を進めていけば、Eclipseを道具として使いこなすことができると思います。
次回はEclipse 3.4でチーム開発を行う際などに必須となる「バージョン管理と連係する機能」を説明します。