我有一个web maven应用程序,它将数据库 EJB jar作为依赖项。
数据库 EJB是包含所有JPA实体和persistence.xml文件的EJB,因此它由所有数据库操作负责。
我刚刚阅读http://arquillian.org/guides/testing_java_persistence/,它解释了如何使用arquillian测试持久性。
本教程认为persistence.xml文件位于webapp路径中,因此它将META-INF / persistence.xml添加为资源。
所以我想知道,在从webapp运行arquillian测试时,如何添加数据库的persistence.xml?这可能吗?
答案 0 :(得分:0)
也许答案有点迟了,但无论如何我希望它对你来说仍然有价值:
您有两个选项,可以从文件中读取存档(可能是我的mvn包生成),也可以使用ShrinkWrap自行创建存档:
选项(1),从某个用@Deployment注释的地方调用:
/** maven did it for us .. we just have to read the file */
private static Archive<?> getArchiveFromFile() {
JavaArchive artifact = ShrinkWrap.create(ZipImporter.class, ARCHIVE_NAME).importFrom(ARCHIVE_FILE)
.as(JavaArchive.class);
return artifact;
}
选项(2),我发现不时检查文件很有用,因此可以选择将其写入文件系统:
/** doing it the hard way ... guess you won't like it as EVERY class plus related stuff needs to be specified */
private static Archive<?> getArchiveManually() {
// creating archive manually
JavaArchive artifact = ShrinkWrap.create(JavaArchive.class, ARCHIVE_NAME)
.addPackage(FooServiceBean.class.getPackage()).addPackage(Foo.class.getPackage())
.addPackage(FooService.class.getPackage()).addAsResource("META-INF/persistence.xml")
.addAsResource("META-INF/beans.xml");
// so we might write it for further inspection
if (WRITE_ARCHIVE) {
artifact.as(ZipExporter.class).exportTo(new File("D:/abc/xyz/tmp/" + ARCHIVE_NAME), true);
}
return artifact;
}
所以你的答案包含在第二个选项中; - )