我正在学习 Arquillian,看看是否可以添加到它的项目中。
我能够创建一个测试并部署一个“静态”test-persistence.xml,类似于 this tutorial .
我的问题是我真正的 persistence.xml 有不同的映射 () 和实体 ()。为了让我的测试正常工作,我必须:
- 将所有类和映射添加到 persistence.xml,这将导致每个测试都必须将所有实体和映射插入到包中,并且在新实体/映射时会增加 test-persistence.xml/tests 的维护成本添加到系统中
- 以某种方式将映射/实体动态添加到我的持久性单元
- 在创建要部署的包之前预生成 persistence.xml
- 每个测试用例都有一个 persistence.xml
替代方案 4 不可行,因为它无法维护。 替代方案 1 是可行的,但我希望保持较小的构建规模。 我尝试了 2 和 3,但我无法找到任何方法(我正在使用 JavaEE、JPA 2.0 和 Hibernate)来制作它们中的任何一个。 Hibernate 似乎不支持动态添加实体/映射,并且 Archive.AddAsResource 只接受路径,而不接受“文件内容”或类似的内容。
我认为这是使用 Arquillian 进行测试时的常见问题。如何构建 persistence.xml,使其只包含测试所需的内容?
最佳答案
创建 persistence.xml 的测试版本,将其作为单独的文件存储在源树中,并让 ShrinkWrap 将其作为文件资源添加到您的测试文件中。
return ShrinkWrap.create(JavaArchive.class)
.addAsManifestResource(new FileAsset(new File("src/test/resources/META-INF/test-persistence.xml")), "persistence.xml");
关于java - 如何生成为每个 arquillian 测试量身定制的 persistence.xml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33830023/