2013-02-12 114 views
3

對每個構建運行單元測試是明智的做法,但完全跳過集成測試階段 - 將其留給CI服務器?僅使用maven在CI服務器上運行集成測試

目前我正在開發一個JavaEE項目,這個項目幾乎只有一些集成測試,這些測試寫得很差,花了很多時間。每次我做任何改變,我都必須等待幾分鐘的時間(從90%的時間就是那些集成測試)。

我的想法是配置一些CI服務器,例如,詹金斯,以便它可以提交對存儲庫的任何提交(或者在Maven構建之後甚至更好),並運行帶有集成測試的Maven構建。但有沒有可能配置Maven的方式,當我輸入mvn install它會編譯運行單元測試 - 建立項目,但完全省略整合階段(以加快開發)。然後,CI會拿起並重新開始運行構建,但這次是否進行了集成測試?

這種改變代碼和部署之間的時間會更短,更少受挫,並且在CI服務器完成構建後的幾分鐘內,任何集成相關的錯誤都會被緩存。

這是個好主意嗎?任何人都可以建議如何配置maven來獲得這樣的行爲?

回答

4

您應該可以使用配置文件進行此操作。儘管我可能需要更多關於集成測試配置的信息。我已經使用maven-failsafe插件和配置文件的組合來執行此項目多年。下面是從POM一個例子片段:

<profiles> 
    <profile> 
     <id>integration-tests</id> 
     <activation> 
      <activeByDefault>false</activeByDefault> 
     </activation> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-failsafe-plugin</artifactId> 
        <executions> 
         <execution> 
          <id>integration-test</id> 
          <goals> 
           <goal>integration-test</goal> 
          </goals> 
          <configuration> 
           ... 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

在正常的地方發展,運行mvn install不應該運行通過Maven的故障保護,插件運行集成測試。然後,您可以配置CI服務器以運行mvn clean install -Pintegration-tests

+0

謝謝,這正是我一直在尋找的。當我有時間安裝時,我會嘗試這種方法。 – kajman 2013-02-16 16:06:36

1

首先,我認爲這是一個好主意。它會讓你的開發週期更快。

我不知道在執行mvn install時完全省略集成測試階段的方法。您可以在開發過程中執行「mvn clean package」嗎?如果這不是一個選項,你用什麼插件進行集成測試?大多數插件都有一個「skip」屬性,您可以使用該屬性跳過插件的執行。您可能想要使用配置文件來打開和關閉不同場景的「跳過」。

+0

感謝您的鼓勵:)我相對較新的集成測試和maven,所以我沒有選擇任何插件。我想我會用另一個答案中提到的maven-failsafe插件。 – kajman 2013-02-16 16:08:15

相關問題