我仍然了解测试驱动开发。我对应用程序的用户注册模块有以下要求。
在java中实现上述内容。我写了以下代码:
问题:单元测试应涵盖上述哪些代码?即bean的getter和setter,验证注释的存在,dao保存用户的能力,UI中相关表单元素的存在。
答案 0 :(得分:4)
我为我所说的“我可以做错了吗?”的事情编写测试。这意味着我不打算测试其他人提供的库 - 只考虑我的配置。
吸气鬼和二传手 - 绝对不是。我使用Eclipse生成它们,不值得测试。验证的注释 - 我不会测试它们,例如,正确实现空检查,我依赖于它们在锡上执行它所说的,但我会测试它们的存在。合适的领域有它们吗?如果我用正则表达式配置它们,我会测试我的正则表达式是正确的。
另一个例子,如果我用Hibernate存储我的POJO。我没有检查Session.save(myObj)
是否有效,但是我可以做错的事情,例如事务边界和映射配置(保存所有字段)等。
我发现用户界面测试非常困难。我曾经多次想过“这次我会” - 但是比形式更复杂,我放弃了。使用类似MVP的模式意味着我可以注入事件来测试大多数计算内容 - 但是仍然存在与未经测试的UI的连接。我通常最终会测试它,复杂的数据处理,以及容易出错的事情。
答案 1 :(得分:2)
我知道TDD的一件事,你永远不会先写代码。
您首先编写测试,因为您的测试失败,您编写/生成代码来修复它,然后编写更多测试来打破您打算实现的功能并为其编写/修复原始代码。
如果你有100%的代码覆盖率,这是最好的。
请参阅维基百科,了解如何使用TDD开始项目 - http://en.wikipedia.org/wiki/Test-driven_development