【问题标题】:Add persistence.xml from EJB dependency in arquillian test在 arquillian 测试中从 EJB 依赖项添加 persistence.xml
【发布时间】:2014-01-15 19:09:07
【问题描述】:

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

数据库 EJB 是一个拥有所有 JPA 实体和 persistence.xml 文件的 EJB,因此它负责所有数据库操作。

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

本教程认为persistence.xml文件在webapp路径下,所以添加了META-INF/persistence.xml作为资源。

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

【问题讨论】:

    标签: testing jpa ejb jboss-arquillian


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-11
      • 1970-01-01
      • 1970-01-01
      • 2014-09-27
      • 1970-01-01
      • 1970-01-01
      • 2016-07-02
      相关资源
      最近更新 更多