这是场景。我有 VO(值对象)或 DTO 对象,它们只是数据的容器。当我将它们分开并保存到数据库(由于很多原因)无法优雅地映射到 VO 时,我想测试每个字段是否已在数据库中成功创建并成功读回重建 VO。
有没有办法可以测试我的测试是否涵盖了 VO 中的每个字段?我有一个关于使用反射来迭代 VO 字段作为解决方案的一部分的想法,但也许你们之前已经解决了这个问题?
当我在 VO 中添加字段时,我希望此测试失败,并且不记得在测试中添加对其的检查。
开发环境:
使用 JUnit、Hibernate/Spring 和 Eclipse
把事情简单化:为每个 VO/DTO 编写一个测试:
- 用测试数据填充 VO/DTO
- save it
- (可选:检查所有内容是否已在数据库级别正确保存,使用纯 JDBC)
- load it
- 检查加载的 VO/DTO 和原始的是否匹配
生产代码将会不断发展,测试也需要维护。恕我直言,使测试尽可能简单,即使它们是重复的,也是最好的方法。过度设计测试或测试框架本身以使测试通用(例如通过反射读取字段并自动填充 VO/DTO)会导致几个问题:
- 编写测试所花费的时间更长
- 测试本身可能会引入错误
- 测试的维护更加困难,因为它们更加复杂
- 测试更难发展,例如通用代码可能不适用于与其他略有不同的新型 VO/DTO,稍后将介绍(这只是一个示例)
- 测试不能轻易地用作生产代码如何工作的示例
测试代码和生产代码本质上有很大不同。在生产代码中,您尝试避免重复并最大限度地重用。生产代码可能很复杂,因为它是经过测试的。另一方面,您应该尝试尽可能简单地进行测试,并且重复是可以的。如果重复的部分被破坏,测试无论如何都会失败。
当生产代码发生更改时,可能需要进行多次测试琐碎地改变了。测试被视为的问题boring一段代码。但我认为他们就应该这样。
如果我问错了你的问题,请告诉我。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)