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

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

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

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

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


当前回答

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

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

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

其他回答

无名的测试——尼克·佩洛

添加到错误跟踪器中以重现特定错误的测试,并且其作者认为不需要有自己的名称。不是增强现有的、缺乏的测试,而是创建一个名为testForBUG123的新测试。

两年后,当测试失败时,您可能需要首先尝试在错误跟踪器中找到bug -123,以弄清楚测试的意图。

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

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

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

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

今天被这个咬了一口:

潮湿的地板上: 测试创建的数据被持久化到某个地方,但是测试完成后并不清理。这会导致测试(相同的测试,也可能是其他测试)在后续测试运行中失败。

在我们的例子中,测试在“temp”目录中留下了一个文件,该文件具有第一次运行测试的用户的权限。当不同的用户尝试在同一台机器上测试时:砰。在James Carr网站上的评论中,Joakim Ohlrogge将其称为“邋遢的工人”,这也是“慷慨的剩菜”的灵感来源之一。我更喜欢我的名字(不那么侮辱人,更熟悉)。

《沉默的捕手》——凯莉? 如果抛出异常则通过的测试。即使实际发生的异常与开发人员预期的异常不同。 参见:秘密捕手

[Test]
[ExpectedException(typeof(Exception))]
public void ItShouldThrowDivideByZeroException()
{
   // some code that throws another exception yet passes the test
}