@BeforeClass and @AfterClass@Before and @After出現次數在一個類中只可以出現一次在一個類中可以出現多次,即可以在多個方法的聲明前加上這兩個Annotaion標簽,執行順序不確定方法名限制方法名不做限制方法名不做限制運行次數在類中只運行一次在每個測試方法之前...
@BeforeClass and @AfterClass | @Before and @After | |
出現次數 | 在一個類中只可以出現一次 | 在一個類中可以出現多次,即可以在多個方法的聲明前加上這兩個Annotaion標簽,執行順序不確定 |
方法名限制 | 方法名不做限制 | 方法名不做限制 |
運行次數 | 在類中只運行一次 | 在每個測試方法之前或者之後都會運行一次 |
執行順序 | @BeforeClass父類中標識了該Annotation的方法將會先於當前類中標識了該Annotation的方法執行。 @AfterClass 父類中標識了該Annotation的方法將會在當前類中標識了該Annotation的方法之後執行 |
@Before父類中標識了該Annotation的方法將會先於當前類中標識了該Annotation的方法執行。 @After父類中標識了該Annotation的方法將會在當前類中標識了該Annotation的方法之後執行 |
static | 必須聲明為public static | 必須聲明為public 並且非static |
@After/@AfterClass是否執行 | 所有標識為@AfterClass的方法都一定會被執行,即使在標識為@BeforeClass的方法拋出異常的的情況下也一樣會。 | 所有標識為@After 的方法都一定會被執行,即使在標識為 @Before 或者 @Test 的方法拋出異常的的情況下也一樣會。 |
跟@Repeat配合 | 只執行一次 | 執行多次 |
※註意:
- @BeforeClass 和 @AfterClass 對於那些比較“昂貴”的資源的分配或者釋放來說是很有效的,因為他們只會在類中被執行一次。相比之下對於那些需要在每次運行之前都要初始化或者在運行之後 都需要被清理的資源來說使用@Before和@After同樣是一個比較明智的選擇。
- junit4和junit3有一定的區別,在junit3中,測試方法必須以test開始,即方法為testXXX(),在junit4中沒有這個 限制。因為在junit4中可以利用註解(annotation)@Test來指定測試方法。但是,在junit4中不用繼承TestCase父類,如果 使用繼承,則junit4的註解將會失效。 junit4不繼承TestCase,自然不能直接使用assertEqual等方法,如果要使用斷言必須直接靜態引用,即 Assert.assertEqual(int ,int ) 這種方式。