JUnit3.8 | JUnit4.x | |
---|---|---|
ライブラリのインポート | TestCaseクラスをインポートする。 | Assertクラスの各メソッドをstaticインポートする。 Testアノテーション等をインポートする。 |
テストクラスの定義 | TestCaseを継承する必要がある。 | 特になし。 |
テストメソッドの定義 | 「public void test~() 」testで始まる名前で、public voidで引数なしのメソッドが実行対象。 | 「@Test public void ~() 」@Testアノテーションを付けたpublic voidで引数なしのメソッドが実行対象。 |
テストメソッド実行前後 | setUp() tearDown()が 各テストメソッドの実行前後に呼ばれる。 | @Before @Afterを付けたメソッドが、 各テストメソッドの実行前後に呼ばれる。 |
全テストの実行前後 | なし。 | @BeforeClass @AfterClassを付けたメソッドが、 全テストの実行前後に呼ばれる。 |
等値の確認 | TestCase#assertEquals() を使用。(TestCaseを継承しているので「 assertEquals() 」で使用可能) | Assert.assertEquals() を使用。(static importすれば「 assertEquals() 」で使用可能) |
例外発生の確認 | Exceptionをcatchし、catchできなかったらfail()を呼ぶ。 | @Testアノテーションの 引数expectedに発生すべき例外クラスを指定。 |
実装例 | JUnit3.8 | JUnit4.x |
import junit.framework.TestCase; public class SampleTest extends TestCase { public void testNormal() { 対象クラス obj = new 対象クラス(); int r = obj.試験対象メソッド(); assertEquals(123, r); assertEquals(456, obj.get内部状態()); }
public void testException() {
try {
試験対象実行();
fail("例外が発生するはず");
} catch(発生すべき例外 e) {
// success
assertEquals("文言", e.getMessage());
}
//試験の続き~
}
} | import static org.junit.Assert.*; import org.junit.Test; public class SampleTest { @Test public void normal() { 対象クラス obj = new 対象クラス(); int r = obj.試験対象メソッド(); assertEquals(123, r); assertEquals(456, obj.get内部状態()); } @Test(expected=発生すべき例外.class)
public void testException() {
試験対象実行();
//文言の確認は無理そう?
//別の試験を続けるのは無理そう?
}
} |