【发布时间】:2014-02-25 15:10:23
【问题描述】:
- 您不得编写任何生产代码,除非是为了通过失败的单元测试。
- 不允许您编写任何足以导致失败的单元测试;编译失败就是失败。
- 您编写的生产代码不得超过足以通过一个失败的单元测试的数量。
谁能告诉我 1 和 3 的区别?对我来说不是很清楚。
对我来说,1 和 3 可以结合使用,还是这些规则也暗示了顺序?
【问题讨论】:
标签: tdd
谁能告诉我 1 和 3 的区别?对我来说不是很清楚。
对我来说,1 和 3 可以结合使用,还是这些规则也暗示了顺序?
【问题讨论】:
标签: tdd
首先:我对这些规则持保留态度。
也就是说,规则一和规则三的概念略有不同:
规则 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;
}
【讨论】: