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

Arquillian files 'in classpath' even though not defined in WebArchive when run tests

正在测试 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 的能力来更精确地测试,但实际行为似乎是 'standard' 创建的 war 限制了我的想法arquillian 的强大功能。

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