【发布时间】:2015-09-07 14:30:04
【问题描述】:
我有一个包含单元测试和集成测试的项目。 这些测试已经分为单元测试和集成测试,同时使用不同的类作为套件。
如何配置surefire在“测试”阶段执行单元测试,在“集成-测试”阶段执行集成测试。
这是我目前的配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<excludes>
<exclude>**/Test*.java</exclude>
<exclude>**/*Test.java</exclude>
<exclude>**/*Test*.java</exclude>
</excludes>
</configuration>
<executions>
<execution>
<id>unit-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<includes>
<include>**/CoreUnitTests.java</include>
</includes>
</configuration>
</execution>
<execution>
<id>integration-test</id>
<phase>integration-test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<includes>
<include>**/CoreIntegrationTests.java</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
使用此配置不会执行任何测试,但如果我删除“排除”,所有测试都将在“测试”阶段执行,而不仅仅是单元测试。
更新 - 解决方案
在 Adam Michalik 的解释下,我能够解决问题。 我没有覆盖默认测试,而是跳过了这些测试,因为对于我的单元测试,id "unit-test" 比 "default-test" 好 这是pom的最终配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<executions>
<execution>
<id>default-test</id>
<configuration>
<skip>true</skip>
</configuration>
</execution>
<execution>
<id>unit-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<includes>
<include>**/CoreUnitTests.java</include>
</includes>
</configuration>
</execution>
<execution>
<id>integration-test</id>
<phase>integration-test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<includes>
<include>**/CoreIntegrationTests.java</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
【问题讨论】:
标签: java maven-surefire-plugin