反模式:必须至少有两个关键元素来正式区分实际的反模式与简单的坏习惯、坏实践或坏想法:

一些重复的行为模式、过程或结构,最初看起来是有益的,但最终产生的坏结果多于有益的结果 一个重构的解决方案,清楚地记录,在实际实践中证明,并可重复。

为您在“野外”中见过太多次的TDD反模式投票。 James Carr的博客文章和testdrivendevelopment yahoogroup的相关讨论

如果你找到了一个“未命名的”…也要贴出来。请每个反模式一篇文章,让投票有意义。

我的既得利益是找到前n个子集,这样我就可以在不久的将来在午餐会上讨论它们。


当前回答

布谷鸟——弗兰克·卡佛 一个单元测试,它与其他几个测试用例一起位于一个测试用例中,并享受与测试用例中的其他测试相同的(可能很长的)设置过程,但随后会从设置中丢弃部分或全部工件并创建自己的工件。 高级症状:不恰当地共享Fixture

其他回答

过度设置——詹姆斯·卡尔 一个甚至开始测试都需要巨大设置的测试。有时要用几百行代码来为一个测试准备环境,涉及到几个对象,由于所有设置的“噪音”,这可能很难真正确定测试的是什么。(来源:James Carr的帖子)

线打击

乍一看,测试覆盖了所有内容,代码覆盖率工具也100%地证实了这一点,但实际上测试只击中了代码,没有任何输出分析。

coverage-vs-reachable-code

母鸡妈妈——弗兰克·卡弗 一个通用的设置,它所做的远远超过实际测试用例所需要的。例如,创建各种复杂的数据结构,其中填充了明显重要和唯一的值,而测试只断言存在或不存在某些东西。 高级症状:不恰当地共享Fixture

我不知道它能做什么…以防万一,我还是加进去了。——匿名开发者

搭便车/搭便车——詹姆斯·卡尔,蒂姆·奥廷格 与其编写一个新的测试用例方法来测试另一个/不同的特性/功能,不如在一个现有的测试用例中使用一个新的断言(及其相应的操作,例如来自AAA的Act步骤)。

慢戳

运行极其缓慢的单元测试。当开发人员开始测试时,他们有时间去洗手间,抽根烟,或者更糟的是,在一天结束回家之前开始测试。(来源:James Carr的帖子)

也就是那些不会像它们应该的那样频繁地运行的测试