如何管理用于测试的虚拟数据?将它们保留在各自的实体中?在一个单独的测试项目中?使用外部资源的序列化程序加载它们?或者只是在需要的地方重新创建它们?
我们有一个应用程序堆栈,其中包含多个模块,这些模块依赖于另一个模块,每个模块都包含实体。每个模块都有自己的测试,并且需要虚拟数据来运行。
现在,具有大量依赖项的模块将需要来自其他模块的大量虚拟数据。然而,这些不会发布它们的虚拟对象,因为它们是测试资源的一部分,因此所有模块都必须一次又一次地设置它们需要的所有虚拟对象。
另外:我们实体中的大多数字段都不可为空,因此即使针对对象层运行事务也需要它们包含一些值,大多数时候还有进一步的限制,例如唯一性、长度等。
是否有最佳实践方法可以解决这个问题,还是所有解决方案都妥协?
更多详情
我们的堆栈看起来像这样:
一个模块:
src/main/java --> gets jared (.../entities/*.java contains the entities)
src/main/resources --> gets jared
src/test/java --> contains dummy object setup, will NOT get jared
src/test/resources --> not jared
我们使用 Maven 来处理依赖关系。
模块示例:
-
Module A有一些虚拟对象
-
Module B需要自己的对象并且与模块 A 相同
选项一)
这可能适用,也可能不适用 - 我很想看看您的虚拟对象和相关设置代码的示例。 (为了更好地了解它是否适用于您的情况。)但是我过去所做的甚至根本没有将这种代码引入测试中。正如您所描述的,它很难生产、调试,尤其是打包和维护。
我通常做的事情(据我所知,在 Java 中,这就是最佳实践)尝试使用测试数据生成器模式,如所述纳特·普莱斯 https://stackoverflow.com/users/99389/nat in his 测试数据构建器 http://www.natpryce.com/articles/000714.html post.
如果您认为这有些相关,请查看以下内容:
- Java 是否存在像 Factory Girl 这样的框架? https://stackoverflow.com/questions/986509/does-a-framework-like-factory-girl-exist-for-java
-
使事情变得简单 http://code.google.com/p/make-it-easy/,Nat 的框架实现了这种模式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)