什么是红/绿测试?

时间:2008-11-10 01:08:27

标签: .net unit-testing

我相信我已经知道了答案,但我不是百分百肯定,所以只是一个简单的问题:红/绿测试究竟意味着什么?

我理解为“首先编写测试,以便它们全部失败(=全红色),然后编写代码并观察每个测试如何变为绿色,当所有测试都变为绿色时,你就可以了”。

我在Scott's MVC Talk at Mix听到了这个消息,所以我不知道这是一个“官方”术语,还是他刚刚完成的。 (编辑:斯科特实际上也解释了它从55:00开始解释,并且他很好地回答了为什么他相信它)

3 个答案:

答案 0 :(得分:13)

它确实涉及TDD或测试驱动开发,但它适用于每个测试。首先编写测试,然后编写代码以通过测试。首先编写所有测试是错误的。 TDD是一种渐进式开发方法。

基本思想是在测试失败(RED)之前没有编写代码。如果测试失败,则编写代码以通过测试(GREEN)。现在您已准备好编写下一个测试 - 即,在所有测试都是绿色之前没有新的测试。或者重构,正如@Brian指出的那样。

答案 1 :(得分:9)

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

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

当我在办公室糖果盘下午放纵后,我正在加油时,我有时会在编码时喊出这些话。当你通过喊“红色”来写一个失败的测试用例后你自己奖励自己时,更容易编写测试。并吃一块巧克力。 :)

答案 2 :(得分:3)

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

这是测试优先发展概要的总结。

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

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

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

  4. 此时,你至少有一些有用的东西。但是,你所拥有的并不是很高质量。因此,您需要重构以提高整体质量。