簡體   English   中英

嵌入Arquillian Spring Tomcat 7-模擬@Configuration類

[英]Arquillian Spring Tomcat 7 embedded - mock @Configuration class

我正在開發一個多模塊Maven項目,並且正在嘗試將Arquillian集成到其中,以簡化開發並創建一些集成測試。 我使用的是嵌入式Tomcat 7,現在一切正常。 現在,我希望模擬服務中注入的類之一。 當我調試(使用Intellij Idea)時,一切似乎都正常工作...將我的測試@Configuration類(ApplicationConfig2)添加到WAR中,它注入了一個Dummy對象,該對象稍后由服務使用。 問題是使用maven(全新安裝)(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");
}

這是我在測試中使用的網絡應用初始化程序:

@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

因此,由於某種原因,即使我沒有在Web歸檔文件中包含類MyWebAppInitializer,它似乎也是由Tomcat加載的。 我正在檢查生成的WAR包,並且當前存在的唯一類是MyWebAppInitializer2(正在測試的類),而不是MyWebAppInitializer。

我想念什么嗎?

從我發現的結果來看,沒有人可以使用嵌入式容器,因為它們不可靠。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM