2011-01-20 66 views

回答

4

编写失败的测试有很多优点。

基本上:如果你编写了一个通过测试,那么你并没有进行测试驱动的开发,因为在测试写入之前导致测试通过的开发就发生了。对于测试驱动设计也是如此,如果你喜欢那个短语(就像我一样);在编写测试之前,导致通过测试的开发的设计发生了。但是,这在某种程度上只是定义; TDD的条款和流程对您而言可能并不重要。

在更实际的层面上,失败的测试会导致更小的解决方案。当你编写足够的代码来通过一个单一的失败测试时,你(经常)只添加一点你以前的东西。你知道那个新位是你的代码满足那个测试的部分;你知道为什么它在那里。然后你写下一个失败的测试,以获得下一个小增量功能。你不要过度解决你的解决方案;你的建立就够了。

因为失败的测试会导致您进行小步增量式开发,您的开发流程会更好。而不是长时间的低调编码,而是被疯狂的调试和丢弃事件打断,你会稳步前进。当你丢弃时,你丢弃的东西很小;很容易重新开始,因为你不会丢掉几个小时或几天的工作。当你调试的时候,你知道这个问题很可能在很小的一部分新代码中。

未通过测试会通知您有关您的代码以及(更重要)您对代码的理解;他们会告诉你“是的,你的理解是代码没有做X是正确的,并且你已经正确和具体地表达了理解”,或者“没有 - 有什么错误”。另一方面,全新的通过测试只会告诉你“是的,它似乎在工作”,但有时候可能是因为测试是错误的。

3

因此,您可以确保您正确编写了测试。如果成功了,那么你知道你在编写测试时会搞砸。

3

“我知道它会失败”有关“我知道它一定会成功”。如果后者真的是真的,你的程序就不会有任何bug ;-)同样的事情没有通过测试:你只有在尝试过之后才真正知道。

0

其实关键是要看失败测试的消息。它如何捕捉你的代码的问题?它有多表现力? 你必须调整你的测试,直到消息完全说明你的代码有什么问题。当你制动某些东西时,测试将会失败,这会使你的生活变得更轻松,这就是重点。