我以前从未使用过单元测试,所以我给 CxxTest 一个机会。我写了一个测试来检查一个函数是否正确地对一个 std::vector 进行排序。首先,当向量未排序时,我确保测试失败,然后作为健全性检查,我测试了 std::sort 是否有效(当然,它确实有效)。到现在为止还挺好。
然后我开始编写自己的排序函数。但是,我犯了一个错误,该函数没有正确排序。由于我的测试在排序时没有输出向量的中间状态,因此很难判断我在排序函数中哪里出错了。我最终使用cout
语句(我可以使用调试器)来查找我的错误,并且在我知道我的排序功能有效之前从未使用过单元测试。
我在这里做错了吗?我认为单元测试很简单
1) 编写测试
2) 编写函数
3) 测试函数
4) 如果测试失败,修改函数
5) 重复 3 和 4 直到测试通过
我使用的过程更像
1) 编写测试
2) 编写函数
3) 测试函数
4) 如果测试失败,调试函数直到它正常工作
5) 重复 3(即使函数已经知道可以工作)
我觉得我的过程不是真正的 TDD,因为我的排序功能的设计不是由我编写的测试驱动的。我是否应该编写更多测试,例如在对矢量进行排序时检查其中间状态的测试?