Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Arquillian Spring Tomcat 7嵌入式-mock@Configuration类_Java_Spring_Tomcat_Jboss Arquillian - Fatal编程技术网

Java Arquillian Spring Tomcat 7嵌入式-mock@Configuration类

Java Arquillian Spring Tomcat 7嵌入式-mock@Configuration类,java,spring,tomcat,jboss-arquillian,Java,Spring,Tomcat,Jboss Arquillian,我正在从事一个多模块maven项目,我正在尝试将arquillian集成到该项目中,以简化开发并创建一些集成测试。 我使用的是Tomcat7嵌入式,我已经到了一切正常的地步。 现在,我希望模拟注入服务中的一个类。当我调试(使用Intellij Idea)时,一切似乎都运行良好。。。我的test@Configuration类(ApplicationConfig2)被添加到WAR中,它注入了一个虚拟对象,该对象稍后由服务使用。 问题是当使用maven(clean install)(surefire插

我正在从事一个多模块maven项目,我正在尝试将arquillian集成到该项目中,以简化开发并创建一些集成测试。 我使用的是Tomcat7嵌入式,我已经到了一切正常的地步。 现在,我希望模拟注入服务中的一个类。当我调试(使用Intellij Idea)时,一切似乎都运行良好。。。我的test@Configuration类(ApplicationConfig2)被添加到WAR中,它注入了一个虚拟对象,该对象稍后由服务使用。 问题是当使用maven(clean install)(surefire插件)运行相同的测试时,它告诉我发生了错误。 以下是我的部署:

@Deployment(testable = false)
public static WebArchive createTestArchive() {
    File[] files = Maven.resolver()
            .offline()
            .loadPomFromFile("pom.xml")
            .resolve("org.glassfish.jersey.containers:jersey-container-servlet-core:2.6",
                    "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.3.1"
            )
            .withTransitivity()
            .asFile();

    return ShrinkWrap
            .create(WebArchive.class, "ROOT.war")
            .addClass(Controller.class)
            .addClass(Service.class)
            .addClass(SomeObjectInterface.class)
            .addClass(MockedSomeObjectImpl.class)
            .addClass(MyApplication2.class)
            .addClass(ApplicationConfig2.class)
            .addClass(MyWebAppInitializer2.class)
            .addAsLibraries(files)
            .setWebXML("in-container-web.xml");
}
以下是我在测试中使用的web应用初始值设定项:

@Order(Integer.MIN_VALUE)
public class MyWebAppInitializer2 implements WebApplicationInitializer {...}
我有另一个名为MyWebAppInitializer的,由“真实”WAR模块使用

我得到的错误是:

INFO: Spring WebApplicationInitializers detected on classpath: [foo.MyWebAppInitializer@1e194cf1, foo.MyWebAppInitializer2@f0a71a7, org.glassfish.jersey.server.spring.SpringWebApplicationInitializer@76ab92a7]
Aug 11, 2015 4:50:34 PM org.apache.catalina.core.ApplicationContext log
因此,出于某种原因,即使我没有将MyWebAppInitializer类包含在web归档中,Tomcat似乎仍然加载了它。我正在检查生成的WAR包,唯一的类是MyWebAppInitializer2(测试类),而不是MyWebAppInitializer


我错过什么了吗

根据我的发现。。。任何人都不应该使用嵌入式容器,因为它们不可靠。

据我所知。。。任何人都不应该使用嵌入式容器,因为它们不可靠。

这既不是对您问题的回答,也没有帮助。这既不是对您问题的回答,也没有帮助。我没有解决方案,但这可能有助于理解错误:嵌入式Tomcat服务器是作为包含测试类的项目的一部分启动的。这也意味着原始的
MyWebAppInitializer
位于类路径中,并在Tomcat启动期间使用。理想情况下,嵌入式Tomcat将在空环境中启动,并仅根据Arquillian配置填充。遗憾的是,我不知道如何做到这一点。我没有解决方案,但这可能有助于理解错误:嵌入式Tomcat服务器是作为包含测试类的项目的一部分启动的。这也意味着原始的
MyWebAppInitializer
位于类路径中,并在Tomcat启动期间使用。理想情况下,嵌入式Tomcat将在空环境中启动,并仅根据Arquillian配置填充。可悲的是,我不知道如何做到这一点。