【问题标题】:Setting Datasource in arquillian在 arquillian 中设置数据源
【发布时间】:2016-02-23 20:58:57
【问题描述】:

所以,我有一个在 main 中使用 persistence.xml 的项目, 它在 src/main/resources/META-INF

现在我想在编写自动化单元测试时使用内存数据库 (H2),所以我需要另一个 persistence.xml,我在 src/test/resouce/META-INF 中有它

所以我的问题是我如何才能超越第一个持久性,

我也在使用 shrikwrap 解析器来解析 pom.xml 中的所有依赖项,所以它解决了所有问题,我将它添加到 shrikwrap 以返回 WebArchive,有什么办法吗,我尝试了很多,例如创建配置文件或 maven 文件过滤,但没有在我解决所有问题并添加到部署时与 Arquillian 合作。

您可以在下面找到我的 Arquillian 部署:

    WebArchive[] file = Maven.resolver().loadPomFromFile("pom.xml")
            .resolve("G:A:V").withTransitivity().as(WebArchive.class);

    WebArchive war = ShrinkWrap.create(WebArchive.class, "test.war")
            .addAsResource("META-INF/persistence.xml")
            .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");

    war.addAsLibraries(file);

    return war;

【问题讨论】:

    标签: java unit-testing jboss-arquillian wildfly-9 shrinkwrap


    【解决方案1】:

    您是否尝试在addAsLibrary(file) 之后添加新资源?

        WebArchive war = ShrinkWrap.create(WebArchive.class, "test.war")
                .addAsLibraries(file)
                .addAsResource("META-INF/persistence.xml")
                .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
    

    【讨论】:

      【解决方案2】:

      这里至少有两个选项。

      • 使用StringAsset - addAsResource(new StringAsset("<xml content>"), "META-INF/persistence.xml") 直接在代码中创建它
      • 保持您的 h2 文件使用不同的名称,例如h2-test-persistence.xml,在 src/test/resources/ 中并使用 addAsResource("h2-test-persistence.xml", "META-INF/persistence.xml") 添加它

      【讨论】:

        猜你喜欢
        • 2013-02-21
        • 2012-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-15
        • 1970-01-01
        相关资源
        最近更新 更多