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

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

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


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

10-12 06:04