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

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

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

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

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


当前回答

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

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

其他回答

当我看到一些闪烁的gui时,我才会相信 一种不健康的执着/痴迷于通过图形用户界面测试应用程序,就像一个真正的用户一样

通过GUI测试业务规则 是一种可怕的结合形式。如果 您编写了数千个测试 然后改变你的GUI, 成千上万的测试中断。 相反,只通过GUI测试GUI内容,并将 图形用户界面以虚拟系统代替 真正的系统,当你做这些测试的时候。 通过API测试业务规则 不涉及GUI。——鲍勃·马丁

“你必须明白眼见为实,但也要知道眼见为实。——丹尼斯·韦特利

不恰当的共享装置——蒂姆·奥廷格 测试夹具中的几个测试用例甚至不使用或不需要设置/拆卸。部分原因是开发人员惰性地创建了一个新的测试夹具…向堆中添加一个测试用例更容易

二等公民——测试代码不像生产代码那样容易重构,包含大量重复的代码,使得维护测试变得困难。

本地英雄

一个测试用例,它依赖于编写它的开发环境中特定的东西来运行。结果是测试通过了开发箱,但是当有人试图在其他地方运行它时失败了。

隐藏的依赖性

与本地英雄密切相关的单元测试,需要在测试运行之前填充一些现有数据。如果这些数据没有被填充,测试就会失败,并且几乎没有给开发人员留下它想要什么或为什么的提示……迫使他们挖掘大量的代码来找出它所使用的数据应该来自哪里。


令人遗憾的是,我们已经多次看到古老的.dll依赖于模糊而多样的.ini文件,这些文件在任何给定的生产系统上都是不同步的,更不用说在没有与负责这些dll的三个开发人员广泛协商的情况下在您的机器上存在。叹息。

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