在Arquillian测试中重写了Persistence.xml

时间:2015-06-18 07:26:19

标签: java java-ee integration-testing wildfly jboss-arquillian

Arquillian的例子主要展示了如何构建WarArchive,JavaArchive等。我找不到任何好的例子如何覆盖已编译的war文件中存在的一个jar文件。

原因是其中一个jar包含persistence.xml,我不想覆盖它,例如hbm2ddl.auto等。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

问题可能是您使用ShrinkWrap.createFromZipFile。根据我对Arquillian的经验,最好为每个测试创建一个自定义WAR / JAR。创建部署的方法通常如下所示:

@Deployment
public static WebArchive createDeployment() {
    //Load dependencies from POM
    final PomEquippedResolveStage pom = Maven
        .resolver()
        .loadPomFromFile("pom.xml");
    final PomEquippedResolveStage dependencies = pom
        .importCompileAndRuntimeDependencies();
    final File[] libs =         
      dependencies.resolve().withTransitivity().asFile();

    return ShrinkWrap
      .create(WebArchive.class,
              "ExampleArchive.war")
      .addPackage(org.example.Example.class.getPackage())
      .addAsLibraries(files)
      .addAsResource("test-persistence.xml",
                    "META-INF/persistence.xml")
      .addAsWebInfResource(EmptyAsset.INSTANCE, "WEB-INF/beans.xml"); 

}

test-persistence.xml进入您的测试资源目录。