Arquillian文件'在classpath'即使在运行测试时未在WebArchive中定义

时间:2015-12-11 16:36:35

标签: jboss-arquillian

测试Arquillian 1.9.final TOMCAT-EMBED-7容器,我在创建WebArchive进行测试时遇到了可疑的结果。

在/ src / main / resources中,我有几个配置文件,我 在运行集成测试时想要使用,而我想提供命名的存储在/ src / embed-itest / resources中。

        org.jboss.shrinkwrap.api.Filter x = Filters.exclude(".*Test.*|.*xml|.*properties");
        WebArchive webArchive = ShrinkWrap
            .create(WebArchive.class, "mytest.war")
            .addPackages(true, x, "com.myapp")
            //and some other additions

然后在srhinkwrap过程结束时,我添加了我想要使用的特定测试文件:

    File n = new File("src/embed-itest/resources/test-log4j.properties");
    webArchive.addAsResource(n,"log4j.properties");

但是,该行为仍在运行,就好像它正在使用/src/main/resources/log4j.properties。我已经验证了_DEFAULT_DEFAULT_mytest.war确实将test-log4j.properties内容作为log4j.properties,但运行测试的行为是/src/main/resources/log4j.properties。 (对于其他配置文件也是如此,例如我试图覆盖的camelContext.xml)。

有人有什么见解吗?我希望能够利用创建自定义WebArchive的功能,使用存档中的特定文件进行更精确的测试,但实际行为似乎就像是标准'创造了战争限制,我认为这是一个伟大的arquillian能力。

1 个答案:

答案 0 :(得分:1)

我认为问题是你正在使用Tomcat嵌入式方法,这意味着你要与Tomcat实例共享测试的JVM。我建议您尝试使用托管或远程模式。