2013年5月29日水曜日

JUnit DBUnit - 5

 JUnit3.8JUnit4.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.8JUnit4.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() {

  試験対象実行();



  //文言の確認は無理そう?


  //別の試験を続けるのは無理そう?
}
}