在arquillian测试中从EJB依赖项添加persistence.xml

时间:2014-01-15 19:09:07

标签: testing jpa ejb jboss-arquillian

我有一个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?这可能吗?

1 个答案:

答案 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;
}

所以你的答案包含在第二个选项中; - )