测试驱动开发:从基础到确认功能的实现
1. 测试情况总结与TDD流程
在测试过程中,我们可以创建多种类型的测试,以下是一些测试情况的总结:
| 测试类型 | 测试结果 | 详细说明 |
| — | — | — |
| 应意外抛出异常的测试 | 错过预期失败 | 测试本应失败但却通过了 |
| 会抛出异常的测试 | 通过 | - |
| 从不抛出异常的测试 | 预期失败 | 未抛出预期的 int
类型异常 |
| 抛出错误类型异常的测试 | 预期失败 | 抛出了意外的异常 |
目前测试结果为:通过5个测试,失败0个测试,错过1个预期失败。程序以退出代码0结束。
我们采用测试驱动开发(TDD)的流程,首先编写代码时应从最终使用的角度出发,而不是陷入细节从底层开始编写,这样能避免构建失败,得到更易用的设计。当代码构建完成后,下一步是做必要的修改让测试通过,因为修改可能会使原本通过的测试失败,所以只做必要的修改。最后,可以在编写让所有测试通过的代码之前增强或添加更多测试。
2. 为测试库添加新功能
现在要为测试库添加一项重要的新功能,即让测试人员能够在测试中检查条件,确保一切按计划进行。这些检查在不同地方有不同叫法,在我们创建的测试库中,将其称为确认(confirmation),每个确认操作称为 confirm
。原因是 assert
在C++中已有使用,使用相同名称会造成混淆; expect
在其他测试库中常用,但很多其他测试库在 expect