- `springboot` 项目进行单元测试
- `Maven` 依赖
- 测试代码
- 测试代码一
- 测试代码二
- `junit 4` 和 `junit 5` 对比
版本说明:使用的 springboot 版本是 2.0.9.RELEASE,它默认集成的是 junit 4.12
Maven 依赖测试代码 测试代码一org.springframework.boot spring-boot-starter-test test
@RunWith(value = SpringJUnit4ClassRunner.class)
@SpringBootTest
public class AppTest {
@Autowired
private UserService userService;
@Test
public void shouldAnswerWithTrue() {
List authAndRoleDTOS = userService.selectAuthAndRole("Tom");
authAndRoleDTOS.forEach(item -> {
System.out.println(item.getAuthCode());
System.out.println(item.getAuthName());
});
}
}
- 也可以使用注解 @RunWith(value = SpringRunner.class) 替代 @RunWith(value = SpringJUnit4ClassRunner.class),二者继承关系如下
public final class SpringRunner extends SpringJUnit4ClassRunner {
public SpringRunner(Class> clazz) throws InitializationError {
super(clazz);
}
}
测试代码二
@RunWith(SpringRunner.class)
@WebMvcTest
public class DeptController3Test {
@Autowired
private DeptController deptController;
@Test
public void fun(){
System.out.println(deptController);
}
}
- @SpringBootTest:告诉 springboot 去寻找一个主配置类(例如带有@SpringBootApplication 的配置类),并使用它来启动 spring 应用程序上下文。该注解会试图去寻找所有可能存在的 bean
- @RunWith:会为我们构造一个 Servlet 容器运行环境,并在此环境下测试
- @WebMvcTest:主要用于 Controller 层的测试,只覆盖应用程序的 Controller 层,HTTP 请求和响应是模拟出来的,不会创建真正的连接
| junit4 | junit5 | 特点 |
|---|---|---|
| @Test | @Test | 声明一个测试方法 |
| @BeforeClass | @BeforeAll | 在当前类的所有测试方法之前执行。注解在 静态方法 上 |
| @AfterClass | @AfterAll | 在当前类中的所有测试方法之后执行。注解在 静态方法 上 |
| @Before | @BeforeEach | 在每个测试方法之前执行。注解在 非静态方法 上 |
| @After | @AfterEach | 在每个测试方法之后执行。注解在 非静态方法 |



