java - 如何生成为每个 arquillian 测试量身定制的 persistence.xml?

标签 java hibernate jpa jboss-arquillian

我正在学习 Arquillian,看看是否可以添加到它的项目中。

我能够创建一个测试并部署一个“静态”test-persistence.xml,类似于 this tutorial .

我的问题是我真正的 persistence.xml 有不同的映射 () 和实体 ()。为了让我的测试正常工作,我必须:

  1. 将所有类和映射添加到 persistence.xml,这将导致每个测试都必须将所有实体和映射插入到包中,并且在新实体/映射时会增加 test-persistence.xml/tests 的维护成本添加到系统中
  2. 以某种方式将映射/实体动态添加到我的持久性单元
  3. 在创建要部署的包之前预生成 persistence.xml
  4. 每个测试用例都有一个 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/

相关文章:

jsf - 在 JSF 数据表中显示 Hibernate/JPA 结果会导致 : java. lang.NumberFormatException:对于输入字符串: "[propertyname]"

java - 从 JAVA 中将数字四舍五入到 10^

java - Hibernate session.delete 发出错误的 SQL 命令

java - Spring MVC 和 Hibernate : How to print out left joined fields?

java - 如何获取 1 :M entity from parent class with limit?

java - Persistence.xml 中的意外元素 Entitymanager 注入(inject)不起作用

java - 未绑定(bind)的泛型行为

java - String Builder 或 ""+someNumb 对于小案例是否更有效/更正确?

java - 最终变量和匿名类的变量可能尚未初始化

spring - 如何使用 spring 数据和基于 java 的配置创建 ddl 文件?