2008-11-10 115 views
4

我相信我已经知道了答案,但我不是100%确定的,所以只是一个简单的问题:红色/绿色测试实际上意味着什么?我认为它是“先写测试,以便它们都失败(=全部是红色),然后编写代码并观察每个测试如何变成绿色,并且当所有测试都是绿色时,你就没事了。”什么是红色/绿色测试?

我在Scott's MVC Talk at Mix里听说过这个,所以我不知道这是一个“官方”的术语还是他只是补充了。 (编辑:斯科特实际上也说明它开始于55:00分,他取得了良好的话,为什么他在这beleives)

+1

红色|绿色测试不是TDD。只有当你完成所有3:Red |绿色|每个周期都有蓝色,蓝色应用于测试和生产代码。要时刻铭记在心。 – PositiveGuy 2018-01-07 05:56:48

回答

11

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

基本思想是在测试失败(RED)之前写入代码。当你有一个失败的测试,那么你写的代码通过测试(绿色)。现在您已准备好开始下一个测试 - 即,直到所有测试都是绿色时才进行新的测试。或者重构,就像@Brian指出的那样。

+0

你的答案并不完全“完整”或准确说明,它需要。这是红色| GREEN |蓝......所有3都是。你不会跳过蓝色或看起来蓝色。如果你这样做不是TDD。当人们不想重构时,他们弄得一团糟,而这不是TDD。你期待在每个周期重构......如果可以的话。但是你不要跳过每个周期的重构,并且确保你在每个周期重构你的测试和生产代码。这就是TDD的真正含义,如果你一直在跳蓝,那么很多人说他们在做TDD,那不是TDD。 – PositiveGuy 2018-01-07 05:54:32

+0

@PitiveitiveGuy当然你可以/需要的时候重新考虑重构。 IIRC,当我写这个答案时,我们在2008年没有把它称为红/绿/蓝。请注意,我提到重构是您的测试通过后的一个选项。根据我的经验,每次都不会发生,尽管随着设计的出现/我最初的想法不同,我经常会重构。 – tvanfosson 2018-01-07 16:08:25

8

“Red-Green-Refactor”是TDD的口头禅。

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

当我在办公室糖果盘下午放纵后糖高峰,我有时喊这句话作为我的代码。当你写出一个失败的测试用例时,通过喊出“Red!”来奖励自己,这样就容易在前面写测试。并吃了一块巧克力。 :)

3

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

这是测试优先发展的大纲概述。

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

  2. 编写测试 - 最初 - 将主要是失败。红。

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

在这一点上,你至少有一些工作。但是,你有什么不是很高的质量。所以你需要重构来提高整体质量。

相关问题