这是场景。我有VO(值对象)或DTO对象,它们只是数据的容器。当我把它们分开并将它们分开保存到一个数据库中(由于很多原因)没有优雅地映射到VO时,我想测试是否在数据库中成功创建每个字段并成功读回重建VO。
我有没有办法测试我的测试涵盖了VO中的每个领域?我有一个关于使用反射来迭代VO字段作为解决方案的一部分的想法,但也许你们之前已经解决了这个问题?
当我在VO中添加字段时,我希望此测试失败,并且不记得在我的测试中添加对它的检查。
开发环境: 使用JUnit,Hibernate / Spring和Eclipse
答案 0 :(得分:5)
保持简单:为每个VO / DTO编写一个测试:
生产代码将不断发展,并且还需要维护测试。使测试尽可能最简单,即使它们是重复的,恕我直言也是最好的方法。 过度设计测试或测试框架本身使测试通用(例如,通过阅读带反射的字段并自动填充VO / DTO)会导致几个问题:
测试和生产代码的性质非常不同。在生产代码中,您尝试避免重复并最大化重用。生产代码可能很复杂,因为它经过测试。另一方面,您应该尝试尽可能简单地进行测试,并且重复是可以的。如果重复的部分被破坏,测试将无论如何都会失败。
当生产代码发生变化时,这可能需要进行多次测试简单更改。问题是测试被视为无聊的代码片段。但我认为这就是他们的方式。
如果我的问题错了,请告诉我。
答案 1 :(得分:1)
我建议cobertura执行此任务。
运行测试后,您将获得完整的代码覆盖率报告,如果使用cobertura-check
ant任务,则可以添加对覆盖范围的检查,并使用属性haltonfailure
停止ant调用。
答案 2 :(得分:0)
您可以将其作为VO
验证的一部分。如果在使用getter时未设置字段,则可能会抛出异常。