大家好,我是林译川,今天我们来聊聊单元测试,特别是后端开发中常用的Mock技术。
在A项目的时候,我响应公司号召,开始写单元测试,积累了一些经验,现在分享给大家。
单元测试规范
首先,单元测试文件要有良好的结构和格式,测试用例的命名要清晰易懂,这样才能描述测试目标的行为。
测试技术Mock
Mock技术,简单来说,就是模拟测试对象的行为,返回预先设计的结果。它有几个重要作用:
- 解除测试对象对外部服务的依赖,提高测试用例的可迁移性和稳定性。
- 提升测试用例的运行速度。
- 提升测试效率。
目录结构和依赖包
创建/src/test资源包,和/src/main同级,test目录下的包结构和main下保持一致。依赖包包括spring-boot-starter-test和mockito-all。
org.springframework.boot
spring-boot-starter-test
test
org.mockito
mockito-all
1.9.5
test
MockMvc控制层单测
MockMvc可以用来测试流程性业务,测试速度快,不依赖网络环境,提供了一套验证的工具。
测试类编写要求
- 继承测试类启动类。
- 测试类类名命名方式为:被测试类名+test。
- 测试方法命名方式为:test+测试方法名。
- 测试方法上加@Test注解。
- 测试类上加@Transactional注解,会自动回滚。
- 使用Assert的API,对返回结果进行断言。
- 多种场景测试可以使用多次使用perform(x)方法进行测试,并断言。
Mockito业务层单测
对于业务逻辑复杂的接口,使用Mockito进行单元测试,将注意力放在业务逻辑上,不依赖数据库。
使用断言的几个原则
- 使用断言捕捉不应该发生的非法情况。
- 使用断言对函数的参数进行确认。
- 当进行防错性编程时,如果
