JUnit 4 使用 Java 5 中的註解(annotation),如下是JUnit 4 經常使用的幾個 annotation 介紹單元測試
@Before:初始化方法測試
@After:釋放資源spa
@Test:測試方法,在這裏能夠測試指望異常和超時時間資源
@Ignore:忽略的測試方法it
@BeforeClass:針對全部測試,只執行一次,且必須爲static voidio
@AfterClass:針對全部測試,只執行一次,且必須爲static voidclass
一個JUnit 4 的單元測試用例執行順序爲:test
@BeforeClass –> @Before –> @Test –> @After –> @AfterClassimport
每個測試方法的調用順序爲:方法
@Before –> @Test –> @After
寫個例子測試一下,測試一下
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
public class JUnit4Test {
@Before
public void before() {
System.out.println("@Before");
}
@Test
public void test() {
System.out.println("@Test");
assertEquals(5 + 5, 10);
}
@Ignore
@Test
public void testIgnore() {
System.out.println("@Ignore");
}
@Test(timeout = 50)
public void testTimeout() {
System.out.println("@Test(timeout = 50)");
assertEquals(5 + 5, 10);
}
@Test(expected = ArithmeticException.class)
public void testExpected() {
System.out.println("@Test(expected = Exception.class)");
throw new ArithmeticException();
}
@After
public void after() {
System.out.println("@After");
}
@BeforeClass
public static void beforeClass() {
System.out.println("@BeforeClass");
};
@AfterClass
public static void afterClass() {
System.out.println("@AfterClass");
};
};
輸出結果
@BeforeClass
@Before
@Test(timeout = 50)
@After
@Before
@Test(expected = Exception.class)
@After
@Before
@Test
@After
@AfterClass
@BeforeClass and @AfterClass @Before and @After
在一個類中只能夠出現一次 在一個類中能夠出現屢次,便可以在多個方法的聲明前加上這兩個 Annotaion標籤,執行順序不肯定
方法名不作限制 方法名不作限制
在類中只運行一次 在每一個測試方法以前或者以後都會運行一次
@BeforeClass父類中標識了該Annotation的 @Before父類中標識了該Annotation的方法將會先於當前類中標識了該
方法將會先於當前類中標識了該Annotation的 Annotation的方法執行。
方法執行。
@AfterClass 父類中標識了該Annotation的 @After父類中標識了該Annotation的方法將會在當前類中標識了該
方法將會在當前類中標識了該Annotation的 Annotation的方法以後執行
方法以後執行
必須聲明爲public static 必須聲明爲public 而且非static
全部標識爲@AfterClass的方法都必定會被執行 全部標識爲@After 的方法都必定會被執行,即便在標識爲
,即便在標識爲@BeforeClass的方法拋出異常 @Before 或者 @Test 的方法拋出異常的的狀況下也同樣會。
的的狀況下也同樣會。
@BeforeClass 和 @AfterClass 對於那些比較「昂貴」的資源的分配或者釋放來講是頗有效的,由於他們只會在類中被執行一次。相比之下對於那些須要在每次運行以前都要初始化或者在運行以後都須要被清理的資源來講使用@Before和@After一樣是一個比較明智的選擇。