作用

  • 使你对项目的稳定性自信满满
  • 渐渐将你导向更容易测试、关注点更加分离的项目架构
  • 有助于完善功能的边缘情况

单元测试 ( unit test )

只测试实现某个功能的最小可测单元,比如一个函数,和任何依赖,框架无关

集成测试 ( integration test)

这部分测试涉及到外部依赖或模块,比如数据库操作、IO 操作等,因此在测试前需要提前配置模拟环境

Mock

如果函数依赖外部模块,直接测试就会变成集成测试,但我们不关心函数以外的逻辑,因此需要模拟外部模块的数据

TDD

步骤

  1. 思考最终要得到什么测试结果才算完成一个新功能(对新手来说这一步最难最花时间)
  2. 编写少量的测试代码然后跑一遍,毫无疑问会报错
  3. 开始编写少量的源码使测试通过,先不用考虑代码优不优雅的问题,甚至可以写死代码,强行让测试通过
  4. 在上一步测试通过的前提下,重构完善代码,不要求一步到位,只要保证每次改动后测试仍然能够通过,就可以分步骤重构
  5. 继续增加新功能,回到第一步继续循环

好处

  • 每次改错代码都能及时得到反馈,而且每一步的改动足够小,更容易定位问题
  • 保证对代码的重构设计的稳定性

测试框架