手表测试失败
回答
编写失败的测试有很多优点。
基本上:如果你编写了一个通过测试,那么你并没有进行测试驱动的开发,因为在测试写入之前导致测试通过的开发就发生了。对于测试驱动设计也是如此,如果你喜欢那个短语(就像我一样);在编写测试之前,导致通过测试的开发的设计发生了。但是,这在某种程度上只是定义; TDD的条款和流程对您而言可能并不重要。
在更实际的层面上,失败的测试会导致更小的解决方案。当你编写足够的代码来通过一个单一的失败测试时,你(经常)只添加一点你以前的东西。你知道那个新位是你的代码满足那个测试的部分;你知道为什么它在那里。然后你写下一个失败的测试,以获得下一个小增量功能。你不要过度解决你的解决方案;你的建立就够了。
因为失败的测试会导致您进行小步增量式开发,您的开发流程会更好。而不是长时间的低调编码,而是被疯狂的调试和丢弃事件打断,你会稳步前进。当你丢弃时,你丢弃的东西很小;很容易重新开始,因为你不会丢掉几个小时或几天的工作。当你调试的时候,你知道这个问题很可能在很小的一部分新代码中。
未通过测试会通知您有关您的代码以及(更重要)您对代码的理解;他们会告诉你“是的,你的理解是代码没有做X是正确的,并且你已经正确和具体地表达了理解”,或者“没有 - 有什么错误”。另一方面,全新的通过测试只会告诉你“是的,它似乎在工作”,但有时候可能是因为测试是错误的。
因此,您可以确保您正确编写了测试。如果成功了,那么你知道你在编写测试时会搞砸。
说“我知道它会失败”有关“我知道它一定会成功”。如果后者真的是真的,你的程序就不会有任何bug ;-)同样的事情没有通过测试:你只有在尝试过之后才真正知道。
其实关键是要看失败测试的消息。它如何捕捉你的代码的问题?它有多表现力? 你必须调整你的测试,直到消息完全说明你的代码有什么问题。当你制动某些东西时,测试将会失败,这会使你的生活变得更轻松,这就是重点。
- 1. 脚手架测试失败,ActionController :: InvalidAuthenticityToken
- 2. UnitTests失败,手动测试通过
- 3. 测试NSURLConnection失败
- 4. Tensorflow测试失败
- 5. E2E测试失败
- 6. DTC测试失败
- 7. Rspec测试失败
- 8. 失败JMockit测试
- 9. NetworkX测试失败
- 10. Django测试失败
- 11. 测试失败has_paper_trail
- 12. JUnit测试失败
- 13. Ember测试失败
- 14. Django测试失败,创建表
- 15. 从Nunit获取失败测试列表
- 16. 摩卡测试失败表示REST API
- 17. 测试时测试失败Openmdao
- 18. AssemblyCleanup()测试失败/异常
- 19. Watin在Jenkins测试失败
- 20. 磨床 - JIRA测试失败
- 21. Rspec的测试失败
- 22. Rspec的测试失败 - FactoryGirl
- 23. C++ Struct失败POD测试
- 24. 单元测试不失败
- 25. 失败的测试类
- 26. JUnit测试用例失败
- 27. Django测试发现失败
- 28. cakephp测试组件失败
- 29. rspec测试失败 - methods.include?
- 30. Rails的测试失败,SQLITE3