2013-01-20 29 views
1

我使用maven-jetty-plugin在Maven構建的integration-test階段運行我的Spring MVC webapp,並對其運行各種測試。此時,我希望能夠切換出一些Spring配置,以便在集成測試期間指向不同的bean實現。這樣我可以更改要運行的數據庫,而不是使用生產連接設置。在集成測試中運行具有不同配置的Spring MVC webapp

我應該考慮什麼樣的方法?我應該嘗試在servlet-context.xml文件上使用資源過濾嗎?我應該有兩個不同的配置文件?我如何使用Jetty插件很好地玩這個遊戲?

編輯:我正在考慮使用Spring的基於Java的@Configuration註解優先於XML的servlet上下文的文件,並轉換什麼樣的豆我構造基於環境變量或類似,但這種感覺錯了,以及。

+0

是您的春季版本> = 3.1? –

+0

@JintianDeng是的,我使用Spring 3.2.0.RELEASE運行。 –

回答

1

我會建議使用彈簧輪廓+行家過濾:

  1. 在pom.xml中定義的屬性其可以賁通過命令行覆蓋:-Dspring.profile.active =發展

     <properties> 
          <spring.profile.active>test</spring.profile.active> 
        </properties> 
    
  2. 在pom.xml中添加資源過濾。確保你的web.xml位於src/main/resources目錄下。

    <resources> 
         <resource> 
         <directory>src/main/resources</directory> 
         <filtering>true</filtering> 
         </resource> 
    </resources> 
    
  3. 活躍在web.xml中的特定彈性曲線,$ {} spring.profile.active將過濾後可以更換。

    <context-param> 
        <param-name>spring.profiles.active</param-name> 
        <param-value>${spring.profile.active}</param-value> 
    </context-param> 
    
  4. 定義豆春季輪廓

    <beans profile="production"> 
        <jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/datasource"/> 
    </beans> 
    
+0

雖然我沒有遵循這一套完整的更改,但是這個答案確實指向了出色的Maven Properties插件,該插件允許我綁定設置「 spring.profiles.active'屬性添加到'pre-integration-test'階段 - 這足以注入不同的@ Profile-annotated bean。 –

0

以前,我總是創建一個包含jetty-maven-plugin配置和集成測試配置的配置文件。

但是,當我瞭解spring-test-mvc時,我轉而使用它,因爲您可以實現使用jetty-maven-plugin進行集成測試時所要實現的一切。另外,您可以模擬所需的服務(例如,在不同應用中的身份驗證)。

所以我建議切換到spring-test-mvc。恕我直言,jetty-maven-plugin風格相當痛苦。

+0

這對使用模擬HTTP請求和響應進行單元測試看起來很有用,但我真的希望能夠在Jetty中運行我的webapp以執行端到端驗收測試,例如使用Selenium。 –

+0

你可以使用@Jintian DENG + properties-maven-plugin的建議。通過在預集成測試期間設置spring.profiles.active屬性來激活彈簧配置文件 – ramirezag

相關問題