@Test 位於一個方法前,標識該方法是一個測試用例。該方法必須是一個公有無參數無返回值的實例方法(public | void | no parameters | not static)。
@Test public void testAdd(){
assertEquals(5,2+3);
}
@Test @interface定義了timeout方法和expected方法。
@Test (timeout=?) 其中“?”爲long型數字,單位是毫秒。表示如果用例執行時間超過該時間,即斷言用例失敗。
@Test (timeout=5000)
@Test (expected=?) 其中“?”爲java.lang.Throwable及其子類。表示該用例期望拋出一個Throwable,如果執行過程中拋出了期望的Throwable,則斷言成功,否則斷言失敗。
@Test (expected=Throwable.class)
@Test (expected= NullPointerException.class)
測試用例斷言失敗,即宣告測試用例執行結束。
JUnit4爲每一個測試用例創建一個測試類實例。
public class MyTestcase {
public MyTestcase(){
System.out.println("new Instance");
}
@Test public void test1() {
System.out.println("@test1");
assertTrue(true);
}
@Test public void test2(){
System.out.println("@test2");
assertEquals(5,2+3);
}
}
代碼執行會打印下列結果:
[list]
[b]new Instance
@test1
new Instance
@test2[/b]
[/list]
JUnit4規範要求,不同測試用例不共享實例變量,也不假想類中測試用例有固定的執行順序。測試用例的執行順序,由測試運行器的調用順序決定,不同測試運行器執行順序不同,同一測試運行器的調用順序也可能不同(比如,多線程測試運行器)。