JUnit4通过注解的方式来识别测试方法。目前主要注解有:
- @BeforeClass 全局只会执行一次,而且是第一个运行,且必须为static void
- @Before 在测试方法运行之前运行,即初始化方法
- @Test 测试方法
- @Ignore 忽略此方法
- @After 在测试方法运行之后允许,即释放资源
- @AfterClass 全局只会执行一次,而且是最后一个运行,且必须为static void
一个JUnit4的单元测试用例执行顺序为:
@BeforeClass -> @Before -> @Test -> @After -> @AfterClass
每一个测试方法的调用顺序为:
@Before -> @Test -> @After
举个栗子
package com.imooc.imoocshiro;
import org.junit.*;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class Demo {
@BeforeClass
public static void beforeClass() {
System.out.println("@BeforeClass");
}
@Before
public void before() {
System.out.println("@Before");
}
@Test
public void test(){
System.out.println("@Test");
assertEquals(5 + 5, 10); // 判断是 5+5 是否等于 10
}
@After
public void after() {
System.out.println("@After");
}
@AfterClass
public static void afterClass() {
System.out.println("@AfterClass");
}
}
运行结果如下:
@BeforeClass
@Before
@Test
@After
@AfterClass
针对 @Test 分为以下几种情况:
- @Test(timeout = 1000),限时测试
- @Test(expected = ArithmeticException.class),测试异常
例子如下:
class Demo {
@Test(timeout = 50)
public void testTimeout() {
System.out.println("@Test(timeout = 50)");
}
@Test(expected = ArithmeticException.class)
public void testExcepted(){
System.out.println("@Test(expected = Exception.class)");
throw new ArithmeticException();
}
}