【问题标题】:Yellow color in TDDTDD 中的黄色
【发布时间】:2011-05-22 01:29:54
【问题描述】:

我刚开始使用 TDD,它似乎对我很有帮助。唯一困扰我的是,我看不到将您的测试标记为“待实施”的方法。当我开发一个应用程序时,我有时会提出新的测试,当我完成当前的更改时,它应该在将来通过,所以我编写了这些测试,当然它们失败了,因为还没有这样的功能。但是由于在完成当前部分之前我不会“修复”它们,因此我希望看到类似黄色状态(在红色和绿色之间)的东西,因为我希望仅在损坏的测试中获得红色并能够标记 TODO用另一种颜色测试。有什么可以帮助我的练习吗?我可以将这样的测试写到某种列表中,但在这种情况下,这将是双重工作,因为我会在第一次用文字和代码中说同样的内容。

编辑:我刚刚发现 Perl 标准单元框架中有待办事项测试,也许 Java 中有类似的东西?

【问题讨论】:

    标签: unit-testing testing tdd


    【解决方案1】:

    TDD 的重点是先编写测试,然后继续编码,直到完成所有测试。进行黄色测试可能会帮助您组织自己,但是,TDD 会因此而失去一些清晰度。

    【讨论】:

    • 是的,也许这些测试不是纯 TDD 的一部分,而是一些 TTDD - Todo 测试驱动开发,但我对以一种不会将这些测试与其他测试混合的方式编写它们的方法感兴趣
    【解决方案2】:

    例如,MSTest 和 NUnit 都支持 Inconclusive 状态,但取决于您的 Test Runner 是否在 UI 中显示为黄色。 JUnit 也可能对不确定性有支持。

    在 Kent Beck 的 TDD by Example 中,他建议在记事本上写一个测试列表,也就是“测试列表”。然后,您一次只进行一项测试,并按照对您有意义的顺序完成列表。这是一个很好的方法,因为您可能会意识到,在您完成测试后,列表中的某些测试可能是不必要的。实际上,您只编写您需要的测试(和代码)。

    按照您的建议,您可以在代码中编写测试列表,并使用所有正常属性相应地命名测试方法,但每个测试的主体将是“Assert.Inconclusive()”

    我过去曾这样做过,但我的测试主体将是“Assert.Fail()”。这取决于你的工作方式——在所有测试通过之前,我不会检查我的更改。由于断言不确定与断言失败不同,它可以用作签入代码以共享更改的一种方式,而不会破坏整个团队的构建(取决于您的构建服务器配置和商定的团队流程)。

    【讨论】:

      【解决方案3】:

      在 JUnit 中,您可以在测试中使用 @Ignore 注释让框架在运行期间跳过它。假设您有一个测试列表,您可以将它们放在测试中,如下所示:

      @Ignore @Test public void somethingShouldHappenUnderThisCircumstance() {}

      @忽略 @测试 public void somethingShouldHppenUnderThatCircumstance() {}

      当然,如果您不首先将它们标记为测试,则不需要忽略。 IntelliJ 等 IDE 将标记被忽略的测试,以便它们更好地脱颖而出。

      【讨论】:

        【解决方案4】:

        完全没问题 - 只要您不打破思路去实施这些新测试。你可以在你的“测试列表”一张纸上记下这一点,或者用好名字写空的测试存根,并用 Ignore("Impl pending") 属性标记它们。

        NUnit GUI 将忽略的测试显示为黄色.. 所以 JUnit 很有可能也会这样做。你需要相应的Ignore annotation 来装饰你的测试

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-03-15
          • 1970-01-01
          • 2012-02-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多