据我了解,在 TDD 中,您必须先编写一个失败的测试,然后编写代码使其通过,然后重构。但是,如果您的代码已经说明了您要测试的情况怎么办?
例如,假设我正在对排序算法进行 TDD(这只是假设)。我可能会为几种情况编写单元测试:
输入 = 1, 2, 3
输出 = 1, 2, 3
输入 = 4, 1, 3, 2
输出 = 1, 2, 3, 4
等等...
为了使测试通过,我最终使用了一个快速的“n 脏冒泡排序”。然后我重构并用更有效的合并排序算法替换它。后来,我意识到我们需要它是一个稳定的排序,所以我也为此编写了一个测试。当然,测试永远不会失败,因为归并排序是一种稳定的排序算法!无论如何,我仍然需要这个测试,以防有人再次重构它以使用不同的、可能不稳定的排序算法。
这是否打破了始终编写失败测试的 TDD 口头禅?我怀疑有人会建议我浪费时间来实现一个不稳定的排序算法,只是为了测试测试用例,然后重新实现合并排序。你多久遇到一次类似的情况,你会怎么做?