Persistence.xml 在 Arquillian 测试中被覆盖

Persistence.xml overridden in Arquillian tests

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

原因是其中一个 jar 包含 persistence.xml,我不想覆盖它以定义 hbm2ddl.auto 等

正确的做法是什么?

问题可能出在您使用 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 进入您的测试资源目录。