观看测试失败

时间:2011-01-20 13:51:15

标签: tdd cucumber bdd

为什么在编写测试后立即观看测试失败如此重要?这有多大意义?

我知道它会失败,浪费时间。

4 个答案:

答案 0 :(得分:4)

编写失败测试有很多好处。

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

在更实际的层面上,未通过测试会导致更小的解决方案。当您编写足够的代码来通过单个失败测试时,您(通常)只会添加一些以前的内容。您知道新位是代码中满足该测试的部分;你知道它为什么存在。然后你编写下一个失败的测试,用于下一个小的增量功能。你没有过度设计你的解决方案;你建立得足够好。

由于测试失败会导致您进行小步增量开发,因此您的开发流程会更好。您可以稳步前进,而不是长时间的低调编码,而是通过疯狂的调试和丢弃事件来打断。当你丢弃时,丢弃的东西很小;它很容易重新开始,因为你不会丢掉数小时或数天的工作。在调试时,您知道问题(很可能)只是新代码的一小部分。

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

答案 1 :(得分:3)

这样您就可以确保正确地编写了测试。如果成功,那么你知道你搞砸了你的考试。

答案 2 :(得分:3)

“我知道它会失败”“我知道它会成功”有关。如果后者确实是真的,你的程序就不会有任何错误;-)同样的错误测试:你只有在尝试过后才知道。

答案 3 :(得分:0)

实际上,重点是观察失败测试的消息。它是如何捕获代码的问题的?它的表现力如何? 您必须调整测试,直到消息准确说明代码的问题。当你在制造某些东西时测试将会失败,这将使你的生活变得更加轻松。这就是这里的重点。