一个JUnit4的单元测试用例执行顺序为:
@BeforeClass -> @Before -> @Test -> @After -> @AfterClass;
每一个测试方法的调用顺序为:
@Before -> @Test -> @After;
代码示例:
4 public class JunitTest {
5
6 @BeforeClass
7 public static void beforeClass(){
8 System.out.println("BeforeClass");
9 }
10
11 @Before
12 public void before(){
13 System.out.println("Before");
14 }
15
16 @Test
17 public void test(){
18 System.out.println("Test");
19 }
20
21 @Test
22 public void test2(){
23 System.out.println("Test2");
24 }
25
26 @After
27 public void after(){
28 System.out.println("After");
29 }
30
31 @AfterClass
32 public static void afterClass(){
33 System.out.println("AfterClass");
34 }
35 }
执行结果:
BeforeClass
Before
Test
After
Before
Test2
After
AfterClass
@BeforeClass、@AfterClass和@Before、@After的对比
[email protected] 和 @AfterClass 对于那些比较“昂贵”的资源的分配或者释放来说是很有效的,因为他们只会在类中被执行一次。相比之下对于那些需要在每次运行之前都要初始化或者在运行之后 都需要被清理的资源来说使用@Before和@After同样是一个比较明智的选择;
2.如果类里面可以有多个注解过@Before和@After的方法,它们的执行顺序是未知的;
3[email protected] @AfterClass注解是junit提供的另外的两个注解,必须设置在public 静态方法之上,表示在class加载之前执行,这样设置的方法只会执行一次,而@Before @After则会再每次test之前/之后执行;
4.在JUnit4中,如果测试类继承了TestCase类,那么所有的Annotation都不会起作用。