2011-10-25 41 views
1

我在一個配置文件中有兩個surefire執行 - 他們需要不同的配置。 當我運行-Dtest = ...時,匹配測試運行兩次 - 每次執行一次。Maven:如何解決方法Surefire的-Dtest覆蓋包括並排除?

如何讓測試運行一次? 或更好,我如何確保遵循包括和排除? (一個執行將運行0試驗;我會用-DfailIfNoTest = FALSE)的Maven的萬無一失,插件

<profile> 
     <id>clustering.integration.tests.profile</id> 
     <activation> 
      <property> 
       <name>clustering.integration.tests</name> 
       <value>true</value> 
      </property> 
     </activation> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <executions combine.children="append"> 

         <!-- Disable default-test execution. --> 
         <execution> 
          <id>default-test</id> 
          <goals><goal>test</goal></goals> 
          <phase>none</phase> 
         </execution> 

         <!-- Single node clustering tests. --> 
         <execution> 
          <id>tests-clustering-single-node.surefire</id> 
          <phase>test</phase> 
          <goals><goal>test</goal></goals> 
          <configuration> 
           <includes> 
            <include>org/jboss/as/test/clustering/single/**/*TestCase.java</include> 
           </includes> 
          </configuration> 
         </execution> 

         <!-- Multi node clustering tests. --> 
         <execution> 
          <id>tests-clustering-multi-node.surefire</id> 
          <phase>test</phase> 
          <goals><goal>test</goal></goals> 
          <configuration> 
           <includes> 
            <include>org/jboss/as/test/clustering/cluster/**/*TestCase.java</include> 
           </includes> 
          </configuration> 
         </execution> 

        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
+0

也許我可以引入另一個配置文件,由屬性「test」激活,這會通過它的ID禁用執行。或者只有在子模塊中才有可能? –

回答

2

這聽起來像是一個濫用maven-surefire-plugin,因爲你似乎有某種集成測試,應該由maven-failsafe-plugin來完成。通過使用它們,您可以自動爲單元和集成測試配置不同的配置。 Maven-surefire-plugin旨在運行單元測試,因爲maven-failsafe插件旨在運行集成測試。此外,您的配置看起來像您需要不同類型的集成測試,換句話說,這意味着有幾個集成測試模塊。

+-- pom.xml 
+-- module-1 
+-- module-2 
+-- integration-test-single-node 
+-- integration-test-multi-node 
... 

這對於集成測試運行具有不同配置是最好的。

1

版本2.12有針對此問題的修復程序。 (見http://jira.codehaus.org/browse/SUREFIRE-806

描述加入到V2.12的變化:從約翰·凱西​​的評論援引JIRA鏈接上面 :

此外,在有多個測試執行單元中的情況下,爲了避免在錯誤的塊中運行指定的測試,現有的includes/excludes現在可以被使用......指定的測試現在充當這些includes/excludes的精化過濾器。這意味着在有多個測試執行塊的情況下,不能運行通常僅通過使用-Dtest = ...運行的測試。

如果只有一個測試執行塊,則指定的測試應像之前一樣覆蓋包含。

+1

SUREFIRE-806由我報告:)而2.12有一個迴歸,請參閱http://jira.codehaus.org/browse/SUREFIRE-827。 –

相關問題