【发布时间】:2016-09-08 14:38:12
【问题描述】:
也许有人可以帮助我理解“测试驱动开发”方法。我自己尝试了以下示例,但我不知道我的理解问题出在哪里。
假设我们需要一个函数来返回两个数字 a 和 b 之和
为了确保该功能正常工作,我编写了几个测试。就像创建 sum-object,检查 a 和 b 是否是数字等等.. 但是正确计算的第一个“真正测试”如下
a=3
b=3
expected value: 6
TDD 方法只允许我们执行这么多步骤来让测试通过。 所以函数看起来像
sum(a, b){
return 6
}
“3+3”测试将通过。
下一个测试可能是“4+10”。
我将运行测试,最后一个测试将失败。真是惊喜……
我将我的功能更改为
sum(a, b){
if(a=3 and b=3)
return 6
else
return 14
}
测试将通过!
这样一直持续下去......我只会为每个测试添加另一个案例。该函数将通过所有这些测试,但对于所有其他未列出的情况,它不会,结果是一个无效且愚蠢的编写函数。
那么有没有万无一失的“诀窍”不陷入这种思维方式? 我认为,测试驱动开发非常简单明了。 “收支平衡”点在哪里,是时候说这种测试方式不再可行并切换到正确的解决方案
return a+b;
???
这是一个非常简单的例子,但我可以想象,还有更复杂的功能,显然不像这个那么容易纠正。
谢谢
【问题讨论】:
标签: unit-testing testing tdd