我开始(至少尝试)使用TDD原理进行编码,我有一个问题:在实际开始编码之前我需要编写多少测试?
以假设的Math类和方法Divide(int a,int b)为例.
a)在开始编码Math之前,我是否必须完全测试Math类的所有方法(Sum,Average,…)?
b)在开始编码方法之前,我是否必须完全测试Divide方法,例如断言为零除以?
c)或者我可以创建一个简单的测试断言并验证它是否失败,编写代码并检查它是否正常,为每个方法的断言重新处理过程?
我认为选项c)是正确的,但我找不到答案(我做了一些搜索,但找不到确定的答案).
您的选项c完全由书TDD表示.
您编写一个失败的测试来执行您正在处理的类的功能,然后只编写足够的代码以使该测试通过.然后再次执行此操作,进行下一次测试.
通过这种方式,您应该看到您编写的每个新代码都非常关注特定的用例/测试,并且还发现您的测试在所涵盖的内容中保持不同.
您希望最终以红绿重构方式工作,以便定期返回代码和测试,以便将事物重构为更好的设计.
当然,在现实世界中,您最终可能会编写许多红色测试,或编写比特定测试所需的更多代码,甚至编写没有测试的代码,但这样做会远离TDD,只应谨慎行事.
关于这个的维基百科文章实际上非常好. http://en.wikipedia.org/wiki/Test-driven_development