作用
- 使你对项目的稳定性自信满满
- 渐渐将你导向更容易测试、关注点更加分离的项目架构
- 有助于完善功能的边缘情况
单元测试 ( unit test )
只测试实现某个功能的最小可测单元,比如一个函数,和任何依赖,框架无关
集成测试 ( integration test)
这部分测试涉及到外部依赖或模块,比如数据库操作、IO 操作等,因此在测试前需要提前配置模拟环境
Mock
如果函数依赖外部模块,直接测试就会变成集成测试,但我们不关心函数以外的逻辑,因此需要模拟外部模块的数据
TDD
步骤
- 思考最终要得到什么测试结果才算完成一个新功能(对新手来说这一步最难最花时间)
- 编写少量的测试代码然后跑一遍,毫无疑问会报错
- 开始编写少量的源码使测试通过,先不用考虑代码优不优雅的问题,甚至可以写死代码,强行让测试通过
- 在上一步测试通过的前提下,重构完善代码,不要求一步到位,只要保证每次改动后测试仍然能够通过,就可以分步骤重构
- 继续增加新功能,回到第一步继续循环
好处
- 每次改错代码都能及时得到反馈,而且每一步的改动足够小,更容易定位问题
- 保证对代码的重构设计的稳定性