如何对SpringBoot项目开展单元测试
概念:
1. 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。在Java中单元测试的最小单元是类。
2. 单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。执行单元测试,就是为了证明这 段代码的行为和我们期望是否一致。
- 添加依赖与配置
配置文件,集成了web启动器、mybatis启动器的集成、及单元测试的启动器集成。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
- Controller层测试
在需要测试的controlller类中点击测试类代码,然后如下图操作
图一
NEXT操作,选择你需要测试的方法,一般这里不需要更改测试类名,存储路径。
图二
生成的测试类中添加测试注解:
@SpringBootTest>:获取启动类,加载配置,寻找主配置启动类(被 @SpringBootApplication 注解的)
@RunWith(SpringRunner.class)>:让JUnit运行Spring的测试环境,获得Spring环境的上下文的支持 @AutoConfigureMockMvc:用于自动配置MockMvc,配置后MockMvc类可以直接注入,相当于new MockMvc @Before:初始化方法 ,对于每一个测试方法都要执行一次。
代码如下图所示
图三
本人建议不要使用@SpringBootTest注解,这样测试的时候的会遇到检测不到测试类是哪个,解决方法是使用@ContextConfiguration(classes={?}),添加@WebMvcTest(?.class)可以解决如下遇到的问题。
图四
2.MockMVC的基本步骤
(1)mockMvc.perform执行一个请求。 (2) MockMvcRequestBuilders.get(“XXX”)构造一个请求。 (3) ResultActions.param添加请求传值 (4) ResultActions.accept()设置返回类型 (5) ResultActions.andExpect添加执行完成后的断言。 (6) ResultActions.andDo添加一个结果处理器,表示要对结果做点什么事情,比如处使用print()输出整个响应结果信息。 (7) ResultActions.andReturn表示执行完成后返回相应的结果。
3.参考网站
https://www.jianshu.com/p/2e84bd5dc9d6 http://fanlychie.github.io/post/spring-boot-testing.html https://docs.spring.io/spring-boot/docs/2.3.0.RELEASE/reference/html/spring-boot-features.html#boot-features-testing http://mybatis.org/spring-boot-starter/mybatis-spring-boot-test-autoconfigure/