是否一次编写尽可能多的测试TDD的良好实践?

时间:2013-05-14 15:41:39

标签: language-agnostic tdd

我是TDD的初学者;我刚刚通过示例阅读了TDD,现在我似乎无法停止以TDD方式编写代码。我注意到很多时候我正在编写测试,看到它失败,纠正它并重构。然后在经过一些测试之后,我发现实际上有更好的方法来编写接口,这使我想要改变以前的一些测试。

显然我写了很多代码浪费时间,所以我想知道一次编写所有测试(或至少尝试)是否是一个好习惯,以节省时间?我问,因为我知道这不是标准方式,但是它错了吗?

2 个答案:

答案 0 :(得分:1)

真正的问题是“你在给定的时间内完成了更多的完成代码吗?”如果你最终得到更多的话,你写多少次就扔掉它并不重要。

当您更多地使用测试时,您将更好地确定测试是否良好。问自己一个问题,“这个测试能以某种方式帮助代码吗?”它是否记录了如何使用代码?是否检查重构时代码没有被错误地修改?它是否测试代码在“快乐路径”上的工作方式以及常见的各种故障?

我会编写一个测试然后编写一段代码。你必须决定“一个单位”代码的数量,但你会在做到这一点时感受到它。

然后我会更新测试以使其更好并改进代码以满足这些更改或编写另一个测试并更新代码以满足测试要求。

继续前进。一点测试。一点代码。它让你专注于这种方式。

别忘了YAGNI。 (你不需要它。)这就是说你现在只为你需要的代码编写代码的原则。不要为“以防万一”或“以后需要”编写任何代码。

稍后会有自己的要求。你仍然会知道如何编码,也许更好,因为你会有更多的经验。你认为你需要的东西可能(或可能不是)你到达那里时真正需要的东西。

过早编写代码是浪费时间和精力。

答案 1 :(得分:1)

“因此,管理问题不在于是否要建立一个试验系统并将其扔掉。你会这样做。[......]因此计划扔掉一个;无论如何你都会。”

弗雷德布鲁克斯,神话人月

你不是唯一一个在完成工作后想出更好办法的人。你应该真的计划它。 :)