| 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() {
試験対象実行();
//文言の確認は無理そう?
//別の試験を続けるのは無理そう?
}
} |