据我所知,在TDD中,你必须先写一个失败的测试,然后写代码让它通过,然后重构。但是,如果您的代码已经考虑到了您想要测试的情况,该怎么办?
例如,假设我正在测试一个排序算法(这只是一个假设)。我可能会为几种情况编写单元测试:
输入= 1、2、3
输出= 1、2、3
输入= 4、1、3、2
输出= 1、2、3、4
等等。
为了通过测试,我最终使用了一个快速的、肮脏的冒泡排序。然后我重构它,并用更有效的合并排序算法替换它。后来,我意识到我们需要它成为一个稳定的排序,所以我也为它写了一个测试。当然,测试永远不会失败,因为合并排序是一个稳定的排序算法!无论如何,我仍然需要这个测试,以防有人再次重构它以使用不同的、可能不稳定的排序算法。
这是否打破了TDD总是编写失败测试的魔咒?我怀疑没有人会建议我浪费时间来实现一个不稳定的排序算法,只是为了测试测试用例,然后重新实现合并排序。你多久会遇到一次类似的情况,你会怎么做?
发布于 2009-01-26 04:48:41
这种情况我已经遇到过很多次了。虽然我推荐并尝试使用TDD,但有时它会使流程中断太多,无法停止并编写测试。
我有一个两步解决方案:
https://stackoverflow.com/questions/360849
复制相似问题