首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TDD -什么时候可以写一个不失败的测试?

TDD -什么时候可以写一个不失败的测试?
EN

Stack Overflow用户
提问于 2008-12-11 20:55:17
回答 12查看 2.5K关注 0票数 8

据我所知,在TDD中,你必须先写一个失败的测试,然后写代码让它通过,然后重构。但是,如果您的代码已经考虑到了您想要测试的情况,该怎么办?

例如,假设我正在测试一个排序算法(这只是一个假设)。我可能会为几种情况编写单元测试:

输入= 1、2、3

输出= 1、2、3

输入= 4、1、3、2

输出= 1、2、3、4

等等。

为了通过测试,我最终使用了一个快速的、肮脏的冒泡排序。然后我重构它,并用更有效的合并排序算法替换它。后来,我意识到我们需要它成为一个稳定的排序,所以我也为它写了一个测试。当然,测试永远不会失败,因为合并排序是一个稳定的排序算法!无论如何,我仍然需要这个测试,以防有人再次重构它以使用不同的、可能不稳定的排序算法。

这是否打破了TDD总是编写失败测试的魔咒?我怀疑没有人会建议我浪费时间来实现一个不稳定的排序算法,只是为了测试测试用例,然后重新实现合并排序。你多久会遇到一次类似的情况,你会怎么做?

EN

Stack Overflow用户

发布于 2009-01-26 04:48:41

这种情况我已经遇到过很多次了。虽然我推荐并尝试使用TDD,但有时它会使流程中断太多,无法停止并编写测试。

我有一个两步解决方案:

  1. 一旦您有了可以工作的代码和未失败的测试,就故意在代码中插入更改以导致测试失败。
  2. 将更改从原始代码中剪切出来,并将其放在注释中-或者放在代码方法中,或者放在测试方法中,这样下次有人想要确保测试仍然可以检测到失败时,他们知道该怎么做。这也可以作为您已经确认测试获得失败的事实的证明。如果它是最干净的,那么就把它留在code方法中。您甚至可能希望使用条件编译来启用测试断路器。
票数 0
EN
查看全部 12 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/360849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档