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

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

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

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

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


当前回答

死树

一个创建了存根,但实际上没有编写测试的测试。

实际上,我在我们的产品代码中看到过这种情况:

class TD_SomeClass {
  public void testAdd() {
    assertEquals(1+1, 2);
  }
}

我都不知道该怎么想了。

其他回答

死树

一个创建了存根,但实际上没有编写测试的测试。

实际上,我在我们的产品代码中看到过这种情况:

class TD_SomeClass {
  public void testAdd() {
    assertEquals(1+1, 2);
  }
}

我都不知道该怎么想了。

慢戳

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

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

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

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

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

巨大的

一个单元测试,尽管它是有效地测试被测对象,但它可以跨越数千行,并包含许多许多测试用例。这可以作为一个指示器,表明测试中的系统是一个上帝对象(James Carr的帖子)。

对于这种情况,一个明确的迹象是测试跨越了不止几行代码。通常,测试是如此复杂,以至于它开始包含自己的错误或不可靠的行为。

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