Junit的所有測試方法都是以@Test修飾,以public void 開頭。如下:
@Test
public void testAdd() {
assertEquals(0, new Calculate().add(0, 1));
}
@BeforeClass && @AfterClass 都是只會執(zhí)行一次,@BeforeClass是在類加載的時候執(zhí)行,@AfterClass 是整個類結(jié)束的時候被執(zhí)行,整個方法是一個靜態(tài)方法。
@BeforeClass
public static void setUpBeforeClass() throws Exception {
System.out.println("before class");
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
System.out.println("after class");
}
@Before && @After兩個方法是在每個測試方法執(zhí)行的執(zhí)行都會被執(zhí)行,@Before是在方法執(zhí)行前執(zhí)行,@After是在方法執(zhí)行結(jié)束后執(zhí)行。
@Before
public void setUp() throws Exception {
System.out.println("before");
}
@After
public void tearDown() throws Exception {
System.out.println("after");
}
@Ignore 所修飾的測試方法會被測試運行器忽略,例如以下的test1方法會被測試運行器忽略執(zhí)行。
@Ignore
@Test
public void test1() {
System.out.println("test1");
}
@Test(timeout=毫秒),用來指定時間上限,如果這個測試方法的執(zhí)行時間超過了這個時間值則測試失敗。
// 會執(zhí)行失敗,因為sleep的時間長于設(shè)定的timeout時間
@Test(timeout=1000)
public void test() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
@Test(expected=異常類),用expected來指定應(yīng)該拋出的異常,如果在執(zhí)行過程中沒有拋出異;蛘邟伋龅漠惓2皇侵付ǖ漠惓,則測試失敗。
// 這個測試案例會執(zhí)行成功,因為指定的異常是程序要拋出的異常
@Test(expected=IndexOutOfBoundsException.class)
public void outOfBounds()
{
new ArrayList<Object>().get(1);
}
測試套件是組織所要測試的類一起運行,如果單個類單獨的運行是比較麻煩的,可以使用測試套件一起運行這些測試類。需要注意的是:
測試套件的類是不包含其他任何方法
同時要更改測試運行器為Suite.class
將要測試的類作為數(shù)組傳入到SuiteClasses({})中
// 更改測試運行器以及將要測試的類放入SuiteClasses中
@RunWith(Suite.class)
@SuiteClasses({ AppTest.class, CalculateTest.class, JunitFlowTest.class })
public class AllTests {
// 沒有測試方法
}