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

时间:2015-11-20 15:11:57

标签: java hibernate jpa jboss-arquillian

我正在学习Arquillian以了解我是否可以添加到项目中。

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

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

  1. 将所有类和映射添加到persistence.xml,这将导致每个测试必须将所有实体和映射插入到包中,并且会在新实体/映射时向test-persistence.xml / tests添加维护成本被添加到系统
  2. 以某种方式将映射/实体即时添加到我的持久性单元
  3. 在创建要部署的程序包
  4. 之前预生成persistence.xml
  5. 每个TestCase都有一个persistence.xml
  6. 备选方案4不可行,因为无法维护。 备选方案1是可行的,但我想保持我的构建更小。 我尝试了2和3,但我无法找到任何方法(我使用JavaEE,JPA 2.0和Hibernate)来制作它们。似乎Hibernate不支持动态添加实体/映射,而Archive.AddAsResource只接受路径,而不是“文件内容”,或类似的东西。

    我认为在使用Arquillian进行测试时这是一个常见问题。如何以一种只包含测试所需内容的方式构建我的persistence.xml?

1 个答案:

答案 0 :(得分:2)

创建persistence.xml的测试版本,将其存储为源树中的单独文件,并让ShrinkWrap将其作为文件资产添加到测试档案中。

return ShrinkWrap.create(JavaArchive.class)  
             .addAsManifestResource(new FileAsset(new File("src/test/resources/META-INF/test-persistence.xml")), "persistence.xml");