SpringBoot集成测试
一. 测试一般程序(Service/DAO/Util类)
1. 在pom.xml中引入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
<1> 如果使用IntelliJ IDEA,可以使用快捷键直接生成:
- Windows快捷键:Ctrl + Shift + T
- Mac快捷键:Commond + Shift + T
<2> 自己手动去创建
3. 编写测试类
<1> 在测试类上加入@RunWith(SpringRunner.class) 与@SpringBootTest 注解,
<2> 编写测试方法并添加@Test注解
二. 测试Controller类
1. 使用TestRestTemplate对象测试
<1> 在pom.xml中引入依赖(与上相同)
<2> 在测试类上加入@RunWith(SpringRunner.class) 与 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) 注解
<3> 使用TestRestTemplate对象测试
2. 使用@WebMvcTest 注解测试
<1> 在pom.xml中引入依赖(与上相同)
<2> 在测试类上加入@RunWith(SpringRunner.class) 与 @WebMvcTest 注解
<3> 使用MockMvc对象测试
仍然测试UserController类
使用总结及相关注意点
1. @WebMvcTest 与 @SpringBootTest 注解不能一起使用,会报错
错误信息:found multiple declarations of @BootstrapWith
一个是:(value=class org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTestContextBootstrapper)
一个是:(value=class org.springframework.boot.test.context.SpringBootTestContextBootstrapper)
2. 使用@WebMvcTest注解进行测试时,只会加载在@WebMvcTest()中配置的bean,而@SpringBootTest注解会加载所有被Spring容器管理的bean
例如:@WebMvcTest(UserController.class) 只会加载UserController类