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
进入您的测试资源目录。
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
进入您的测试资源目录。