【问题标题】:What is red/green testing?什么是红/绿测试?
【发布时间】:2008-11-10 01:08:26
【问题描述】:

我相信我已经知道了答案,但我不能 100% 确定,所以只是一个简单的问题:红/绿测试实际上意味着什么?

我将其理解为“先编写您的测试,让它们都失败(= 全部为红色),然后编写您的代码并观察每个测试如何变为绿色,当全部变为绿色时,您就没事了”。

我在Scott's MVC Talk at Mix 听到这个,所以我不知道这是一个“官方”术语还是他只是编造的。 (编辑:Scott 实际上也在 55:00 分钟开始解释它,并且他很好地评论了为什么他相信它)

【问题讨论】:

  • 红色 |绿色测试不是TDD。只有当您完成所有 3 项时:红色 |绿色 | Blue 在每个周期上,Blue 应用于测试和生产代码。请记住这一点。

标签: .net unit-testing


【解决方案1】:

它确实指的是 TDD 或测试驱动开发,但它适用于每个测试。先写测试,再写代码通过测试。首先编写所有测试是错误的。 TDD 是一种增量开发方法。

基本思想是在未通过测​​试 (RED) 之前不编写任何代码。当您的测试失败时,您编写代码以通过测试(绿色)。现在您已准备好编写下一个测试——即,在所有测试都为绿色之前,不要进行新的测试。或者重构,正如@Brian 指出的那样。

【讨论】:

  • 您的答案不是很“完整”或准确地陈述,它需要是。它是红色的 |绿色 |蓝色....一直都是 3 个。您不会跳过 BLUE 或寻找 BLUE。如果你这样做,那不是TDD。当人们不考虑重构时,他们会弄得一团糟,这不是 TDD。您希望在每个周期中进行重构……如果可以的话。但是您不会跳过在每个周期进行重构,并且确保您希望在每个周期都重构您的测试和生产代码。这就是 TDD,如果你一直在跳蓝,很多人说他们在做 TDD,那不是 TDD。
  • @PositiveGuy 当然,您希望在可以/需要时进行重构。 IIRC,当我写这个答案时,我们在 2008 年并没有把它称为红色/绿色/蓝色。请注意,我确实提到,一旦您的测试通过,重构是一种选择。根据我的经验,它不会每次都发生,尽管我经常在设计出现/偏离我最初的想法时进行重构。
【解决方案2】:

“红-绿-重构”是 TDD 的口头禅。

http://en.wikipedia.org/wiki/Test-driven_development

当我在办公室的糖果盘中放纵了一个下午后,正忙着吃糖时,我有时会在编码时喊出这些词。如果您在编写失败的测试用例后通过喊“红色!”来奖励自己,那么预先编写测试会更容易。和吃一块巧克力。 :)

【讨论】:

    【解决方案3】:

    当您运行 TDD GUI 时,显示为红色,直到所有测试通过,然后切换为绿色。

    这是对测试优先开发的粗略概述。

    1. 编写一些可编译的骨架代码,有足够的 API 可测试。

    2. 编写测试——最初——大部分都是失败的。红色。

    3. 完成代码。测试通过。绿色。

    此时,您至少有一些可行的方法。但是,您所拥有的并不是很高的质量。因此,您需要进行重构以提高整体质量。

    【讨论】:

      猜你喜欢
      • 2015-09-14
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-15
      • 1970-01-01
      • 2016-03-20
      • 2023-02-24
      相关资源
      最近更新 更多