添加持久性.xml从 ejb 依赖项添加到 arquillian测试中



我有一个 web maven 应用程序,它有数据库 EJB jar 作为依赖项。

数据库 EJB 是包含所有 JPA 实体和持久性.xml文件的文件,因此它负责所有数据库操作。

我刚刚阅读了 http://arquillian.org/guides/testing_java_persistence/,它解释了如何使用arquillian测试持久性。

本教程认为持久性.xml文件位于 Web 应用路径中,因此它将 META-INF/持久性.xml 添加为资源。

所以我想知道,从我的 web 应用程序运行 arquillian 测试时.xml如何添加数据库的持久性?这可能吗?

也许答案来得有点晚,但无论如何,我希望它对你仍然有价值:

您有两种选择,要么从文件中读取存档(可能生成了我的 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;
}

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

最新更新