鲍勃叔叔的TDD规则

时间:2014-02-25 15:10:24

标签: tdd

UncleBobsThreeTDDRules

  1. 除非要通过失败的单元测试,否则不允许编写任何生产代码。
  2. 您不得再编写任何单元测试,而不是足以使其失败;编译失败就是失败。
  3. 您不能再编写足以通过一次失败的单元测试的生产代码。
  4. 有人可以告诉我1和3之间的区别吗?这对我来说不是很清楚。

    对我来说,1和3可以合并,还是这些规则也建议订单?

1 个答案:

答案 0 :(得分:11)

首先:我会毫不犹豫地遵守这些规则。

尽管如此,规则一和规则三的概念略有不同:

规则1:如果没有失败的测试,你不应该编写任何代码。

规则3:你不应该实现一个完整的算法(即使它会使测试通过),但只有最简单的(有些人可能会说是天真的)解决方案才能使测试通过。

一个例子:

假设您需要一个采用数字并返回相同数字的方法。假设您有以下测试:

public void Entering1Returns1() {
    assert.That(calculate(1) == 1);
}

此实施符合两条规则:

public void calculate(int input) {
    return 1;
}

这个会违反规则3(严格来说),因为它不仅仅需要:

public void calculate(int input) {
    return input;
}