JUnit4 中@AfterClass @BeforeClass @after @before的區別對比


JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的幾個annotation: 
@Before:初始化方法   對於每一個測試方法都要執行一次(注意與BeforeClass區別,后者是對於所有方法執行一次)
@After:釋放資源  對於每一個測試方法都要執行一次(注意與AfterClass區別,后者是對於所有方法執行一次)
@Test:測試方法,在這里可以測試期望異常和超時時間 
@Test(expected=ArithmeticException.class)檢查被測方法是否拋出ArithmeticException異常 
@Ignore:忽略的測試方法 
@BeforeClass:針對所有測試,只執行一次,且必須為static void 
@AfterClass:針對所有測試,只執行一次,且必須為static void 
一個JUnit4的單元測試用例執行順序為: 
@BeforeClass -> @Before -> @Test -> @After -> @AfterClass; 
每一個測試方法的調用順序為: 

@Before -> @Test -> @After; 

 

[java]  view plain  copy
 
  1. public class JUnit4Test {     
  2.     @Before    
  3.     public void before() {     
  4.         System.out.println("@Before");     
  5.     }     
  6.       
  7.     @Test    
  8.          /**   
  9.           *Mark your test cases with @Test annotations.    
  10.           *You don’t need to prefix your test cases with “test”.   
  11.           *tested class does not need to extend from “TestCase” class.   
  12.           */    
  13.     public void test() {     
  14.         System.out.println("@Test");     
  15.         assertEquals(5 + 5, 10);     
  16.     }     
  17.       
  18.     @Ignore    
  19.     @Test    
  20.     public void testIgnore() {     
  21.         System.out.println("@Ignore");     
  22.     }     
  23.       
  24.     @Test(timeout = 50)     
  25.     public void testTimeout() {     
  26.         System.out.println("@Test(timeout = 50)");     
  27.         assertEquals(5 + 5, 10);     
  28.     }     
  29.       
  30.     @Test(expected = ArithmeticException.class)     
  31.     public void testExpected() {     
  32.         System.out.println("@Test(expected = Exception.class)");     
  33.         throw new ArithmeticException();     
  34.     }     
  35.       
  36.     @After    
  37.     public void after() {     
  38.         System.out.println("@After");     
  39.     }     
  40.       
  41.     @BeforeClass    
  42.     public static void beforeClass() {     
  43.         System.out.println("@BeforeClass");     
  44.     };     
  45.       
  46.     @AfterClass    
  47.     public static void afterClass() {     
  48.         System.out.println("@AfterClass");     
  49.     };     
  50. };    


輸出結果: 
@BeforeClass 
@Before 
@Test(timeout = 50) 
@After 
@Before 
@Test(expected = Exception.class) 
@After 
@Before 
@Test 
@After 
@AfterClass 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM