一個標準的Junit 4的執行流程,大致如下:
測試類例項化 -> @BeforeClass -> @Before -> @Test -> @After -> @AfterClass
下面的程式碼輸出明確表明了其執行流程:
package com.junit.tutorial; import org.junit.*; import static org.junit.Assert.*; import java.util.*; /** * @author mkyong * */ public class BasicAnnotation { private Collection collection; @BeforeClass public static void oneTimeSetUp() { // one-time initialization code System.out.println("@BeforeClass - oneTimeSetUp"); } @AfterClass public static void oneTimeTearDown() { // one-time cleanup code System.out.println("@AfterClass - oneTimeTearDown"); } @Before public void setUp() { collection = new ArrayList(); System.out.println("@Before - setUp"); } @After public void tearDown() { collection.clear(); System.out.println("@After - tearDown"); } @Test public void testEmptyCollection() { assertTrue(collection.isEmpty()); System.out.println("@Test - testEmptyCollection"); } @Test public void testOneItemCollection() { collection.add("itemA"); assertEquals(1, collection.size()); System.out.println("@Test - testOneItemCollection"); } }
結果:
@BeforeClass - oneTimeSetUp
@Before - setUp
@Test - testOneItemCollection
@After - tearDown
@Before - setUp
@Test - testEmptyCollection
@After - tearDown
@AfterClass - oneTimeTearDown
需要注意的是,我們需要申明 @BeforeClass 和 @AfterClass 為靜態方法。