| 特性 | Junit 4 | Junit 5 |
|---|---|---|
| 在当前类的所有测试方法之前执行。注解在静态方法上。此方法可以包含一些初始化代码。 | @BeforeClass | @BeforeAll |
| 在当前类中的所有测试方法之后执行。注解在静态方法上。此方法可以包含一些清理代码。 | @AfterClass | @AfterAll |
| 在每个测试方法之前执行。注解在非静态方法上。可以重新初始化测试方法所需要使用的类的某些属性。 | @Before | @BeforeEach |
| 在每个测试方法之后执行。注解在非静态方法上。可以回滚测试方法引起的数据库修改。 | @After | @AfterEach |
@RunWith(SpringRunner.class)
@org.springframework.boot.test.context.SpringBootTest
@ContextConfiguration(classes = MyCommunityApplication.class)
public class SpringBootTest {
@Autowired
private DiscussPostService discussPostService;
private DiscussPost data;
@BeforeClass
public static void beforeAll() {
System.out.println("beforeClass");
}
@AfterClass
public static void afterAll() {
System.out.println("afterClass");
}
@Before
public void before() {
System.out.println("before");
}
@After
public void after() {
System.out.println("after");
}
@Test
public void test1(){
System.out.println("test1");
}
@Test
public void test2(){
System.out.println("test2");
}
}
执行test1,可以看到

打印的顺序是beforeClass、before、test1、after、afterClass,这也是。
一般单元测试是直接运行整个测试类,然后查看哪个测试方法有错误,如:

全部通过:

@RunWith(SpringRunner.class)
@org.springframework.boot.test.context.SpringBootTest
@ContextConfiguration(classes = MyCommunityApplication.class)
public class SpringBootTest {
@Autowired
private DiscussPostService discussPostService;
private DiscussPost data;
@BeforeClass
public static void beforeAll() {
System.out.println("beforeClass");
}
@AfterClass
public static void afterAll() {
System.out.println("afterClass");
}
@Before
public void before() {
System.out.println("before");
// initialize
data = new DiscussPost();
data.setUserId(111);
data.setId(287);
data.setTitle("Test title");
data.setContent("Test content");
data.setCreateTime(new Date());
discussPostService.addDiscussPost(data);
System.out.println(data.getId());
}
@After
public void after() {
System.out.println("after");
// delete
discussPostService.updateStatus(data.getId(), 2);
}
@Test
public void testFindById(){
DiscussPost discussPost = discussPostService.findDiscussPostById(data.getId());
Assert.assertNotNull(discussPost);
Assert.assertEquals(discussPost.getTitle(), data.getTitle());
Assert.assertEquals(discussPost.getContent(), data.getContent());
}
@Test
public void testUpdateScore() {
int rows = discussPostService.updateScore(data.getId(), 2000.00);
Assert.assertEquals(1, rows);
DiscussPost post = discussPostService.findDiscussPostById(data.getId());
Assert.assertEquals(2000.00, post.getScore(), 2);
}
}
测试未通过:
