2009-01-05 27 views
17

我想用testngSurefire plug-inMaven。這個想法是用一組integrationTest標記一些測試並運行插件兩次:目標test不包括組integrationTest和目標integration-test包括組integrationTest只。如何使用Maven Surefire插件與不同的組進行測試和集成測試?

我發現一些material爲兩個目標運行插件和工作,但第二次運行組不起作用(沒有測試執行)。

這裏是我的pom.xml的build元素的插件配置:

<plugin> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <configuration> 
     <excludedGroups>integrationTest</excludedGroups> 
     <reportFormat>brief</reportFormat> 
     <trimStackTrace>true</trimStackTrace> 
     <useFile>false</useFile> 
    </configuration> 
    <executions> 
     <execution> 
     <id>integration-test</id> 
     <phase>integration-test</phase> 
     <goals> 
      <goal>test</goal> 
     </goals> 
     <configuration> 
      <groups>integrationTest</groups> 
      <excludedGroups/> 
      <reportsDirectory>${project.build.directory}/surefire-reports/integration</reportsDirectory> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

任何想法? mvn integration-test運行所有的單元測試如預期(不包括組integrationTest),但第二次試運行只是寫道:

運行的TestSuite
測試運行:0,失敗:0,錯誤:0,跳過:0,經過的時間:0.562秒

mvn test的結果與預期的一樣,測試運行並且組integrationTest被忽略。

回答

14

我明白了 - 惱人的配置實現!

<excludedGroups/>不覆蓋<excludedGroups>integrationTest</excludedGroups>。您需要指定任何(未知)組,例如<excludedGroups>none</excludedGroups>

+2

excludedGroups不適用於TestNG 5.14.1 - 改爲使用5.14.2! – 2010-11-16 08:49:02

+2

對於Surefire 2.18.1和JUnit 4.10,我得到錯誤`[ERROR]無法執行目標org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test(integration-test)on project example-項目:執行集成測試 目標org.apache.maven.plugins:maven-surefire-plugin:2.18.1:測試失敗:分叉進程出錯 [錯誤] java.lang.RuntimeException:無法加載類別:無`。看起來你重寫的小組必須至少存在,即使它不在任何地方使用。我用`公共接口SystemTest擴展IntegrationTest`做這個,並排除*那個*類別。 – orlade 2015-01-08 22:30:04

9

Failsafe plugin是這樣做的最好方法(當您發佈此問題時它可能不可用)。它爲構建生命週期添加了一個集成測試階段。它允許您在測試之前和之後運行安裝和拆卸活動,這對於管理嵌入式容器非常有用。

相關問題