2011-08-25 55 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

我知道这有点迟,但是,您能否提供解决方案的工作示例/最终版本? –

相关问题