我有两种单元测试(不是集成测试)。由于Spring Security的一些奇怪行为,我需要先运行所有正常测试,然后再运行安全测试。
我正在使用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>
如果我用手在我的手机中更换它们,那么我可以进行正常或安全测试。但是我当然希望在每次构建中运行这两种测试。
我的第一次尝试是有两个完整的maven-surefire-plugin配置。但是后来maven只考虑了他们中的最后一个。
我的下一个尝试是使用两个execution
定义,但是然后看起来似乎忽略了规则并且混合了两种测试。
所以我的一般问题是如何为maven surefire指定两个文件集,以便它们将逐个执行?更具体地说明如何指定两个不同的文件集。
执行配置
<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>
答案 0 :(得分:8)
您没有更改绑定到superpom中测试阶段的默认surefire执行,因此它仍然以其默认配置运行。该执行的id是“default-test”。您需要覆盖它以将其从测试阶段解除绑定,否则只需将该ID用于您自己的一个执行。