单元测试
原文地址
https://stackify.com/unit-testing-basics-best-practices/
单元测试概念
哪些不算单元测试
- 如果你写的的代码是往数据库里写东西,或者从磁盘读文件,那么你就不需要写单元测试。即,依赖于环境,没有设置好就会出错的东西是不需要写单元测试的。
- 单元测试不能被当做其他类型的测试。单元测试不会生成一堆随机的数据去调用你的应用来进行测试。
- 单元测试不测试系统的多个组件和其工作方式。比如从命令行得到一个输入,来测试输出结果,这是一个端到端的系统测试,不是单元测试。
- 不能出错。单元测试不能报错,与预期结果不符。
什么是单元测试
单元测试隔离并测试特定的代码单元。听起来有点绕。
你可以把单元认为是一个方法,一个方法做特定的事情,测试一个方法就是测试特定的事情。不要企图创建一个什么都测试的东西。
单元测试最佳实践
1. Arrange, Act, Assert
Arrage
准备好测试需要的前置条件,比如示例化类,准备好测试数据等等。
Act
调用需要测试的方法。
Assert
对结果进行断言。
2. 一个测试方法只能有一个断言
这样的话结构清晰,逻辑清楚,而且断言结果容易判断出问题所在位置。
3. 避免测试出现相互依赖
比如不能共享一个类的实例,不能有参数传递。总之就是各干各的,不要共用一个东西。
4. Keep It Short, Sweet, and Visible
保持简单,可以让你在查问题的时候一眼看到重点,而不是在一堆混乱的逻辑里挣扎。
5. Recognize Test Setup as a Smell
当你在arrange阶段发现一切都很难设置好,好复杂的时候,你就应该停下来重新思考你的代码设计,不然这样的测试也是不可靠的,迟早会出问题。
6. 把单元测试加入到Build的内容里
如果build的时候单元测试出错了,那就应该立即停下并检查代码,这样能保证团队协作的质量。