前言
在功能开发完成后,虽然有专门的测试人员,但开发人员自身也要进行单元测试。
一般公司对BUG率和单元测试覆盖率都会有一定的要求,所以做好单元测试还是很有必要的。
后端提供的都是接口,本文使用MockMvc模拟接口进行测试。
具体实现
Maven依赖
1 | 复制代码<dependencies> |
为了防止测试对真实数据库数据产生影响,这里使用H2数据库,并进行参数配置。
参数配置
1 | 复制代码spring: |
- spring.datasource.schema 指定建表语句文件
- mybatis.mapper-locations 指定Mapper文件
示例
1 | 复制代码@SpringBootTest |
- @SpringBootTest 指定测试类在SpringBoot环境下运行
- @AutoConfigureMockMvc 用于自动配置MockMvc,配置后MockMvc类可以直接注入
- @SqlGroup 指定测试方法执行前后的SQL语句
比如,可以在测试方法执行前,初始化数据;在测试方法执行后,清除数据。
MockMvc
MockMvc是接口测试的主入口,核心方法perform(RequestBuilder),
会自动执行SpringMVC的流程并映射到相应的控制器执行处理,方法返回值是ResultActions。
ResultActions
- andExpect 添加ResultMatcher验证规则,验证执行结果是否正确。
- andDo 添加ResultHandler结果处理器,比如打印结果到控制台。
- andReturn 返回MvcResult执行结果,可以对结果进行自定义验证。
MockMvcResultMatchers
用于验证执行结果是否正确,详见测试方法getUser()。
MockMvcResultHandlers
结果处理器,表示要对结果做点什么事情。详见测试方法getUser()。
比如使用MockMvcResultHandlers.print()打印响应结果信息到控制台。如下:
MvcResult
单元测试执行结果,可以对结果进行自定义验证,详见测试方法getUser2()。
源码
往期回顾
本文转载自: 掘金