2011-08-25 52 views
3

我有兩種單元測試(不是集成測試)。由於Spring Security的某些奇怪行爲,我需要首先運行所有正常測試,然後再運行安全測試。Maven Surefire與不同的文件集

我使用JUnit(所以我不能使用任何TestNG的羣體)。

所以我所做的是指定兩組包括和排除規則。

<excludes> 
    <exclude>**/*SecurityTest.java</exclude>     
</excludes> 
<includes> 
    <include>**/*Test.java</include> 
    <include>**/*Tests.java</include> 
</includes> 

<excludes> 
</excludes> 
<includes> 
    <include>**/*SecurityTest.java</include> 
</includes> 

,如果我代替他們在我的POM手工,所以我可以有正常的或安全測試工作。但是我當然希望在每個構建中都運行這兩種測試。

我的第一次嘗試是有兩個完整的Maven的萬無一失,插件configruation。但是,maven只考慮其中的最後一個。

我的下一個嘗試是使用兩個execution定義,但隨後神火似乎忽略所有的規則和運行這兩個類型的混合測試。

所以我一般的問題是如何Maven的萬無一失指定兩個文件集,使他們在每次陸續執行?更具體地說明如何指定兩個不同的文件集。


與執行配置

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.9</version> 
    <configuration> 
     <junitArtifactName>junit:junit</junitArtifactName> 
     <encoding>UTF-8</encoding> 
     <inputEncoding>UTF-8</inputEncoding> 
     <outputEncoding>UTF-8</outputEncoding> 
     <argLine>-Xms256m -Xmx512m -XX:MaxPermSize=128m -ea</argLine> 
    </configuration> 

    <executions> 
     <execution> 
      <id>normal-tests</id> 
      <phase>test</phase> 
      <goals> 
       <goal>test</goal> 
      </goals> 
      <configuration> 
       <excludes> 
        <exclude>**/Abstract*.java</exclude> 
        <exclude>**/*_Roo_*</exclude> 
        <exclude>**/*SecurityTest.java</exclude> 
       </excludes> 
       <includes> 
        <include>**/*Test.java</include> 
        <include>**/*Tests.java</include> 
       </includes> 
      </configuration> 
     </execution> 
     <execution> 
      <id>security-tests</id> 
      <phase>test</phase> 
      <goals> 
       <goal>test</goal> 
      </goals> 
      <configuration> 
       <excludes> 
        <exclude>**/Abstract*.java</exclude> 
        <exclude>**/*_Roo_*</exclude> 
       </excludes> 
       <includes> 
        <include>**/*SecurityTest.java</include> 
       </includes> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

回答

6

你沒有改變這勢必會在superpom測試階段,所以它仍然使用其默認的配置運行默認萬無一失執行。該執行的id是「default-test」。您需要重寫它以將其從測試階段解除綁定,或者只是將該ID用於您自己的執行。

+1

我知道這有點遲,但是,您能否提供解決方案的工作示例/最終版本? –

相關問題