我想你试过了Maven Surefire Plugin的test
选项(小写)来调用一个特定的测试,Surefire在反应堆构建的第一个模块中找不到,因此失败。
我还假设集成测试由Maven Failsafe Plugin执行。如果不是的话,他们应该像官方文档中提到的那样:
Failsafe插件旨在运行集成测试,而Surefire插件旨在运行单元测试。 ...如果您使用Surefire插件运行测试,那么当您的测试失败时,构建将在integration-test
阶段停止,并且您的集成测试环境不会被正确拆除。 ..故障安全插件在integration-test
阶段不会使构建失败,从而使post-integration-test
阶段能够执行。
简而言之:这样做更安全,更健壮。
虽然Maven的故障安全插件的插件配置条目也test
,其相应的命令行选项it.test
,所以你应该去运行:
mvn clean install -Dit.test=SampleIT
凡SampleIT
是一个集成测试(注意标准IT
后缀,recognized by default按故障安全。
官方Running a Single Test文档还提供上运行单一集成测试的进一步细节。
另请注意:如果您在构建的其他模块中没有其他集成测试,则上述调用将工作,否则它将无法在之前(在触发相关模块之前)找到它。
如果您使用Surefire运行有关的集成测试(也不应该),或者您有几个运行集成测试的模块,则应该在相关模块中配置一个配置文件,以处理此特定调用,类似如下:
<profiles>
<profile>
<id>run-single-it-test</id>
<activation>
<property>
<name>single.it.test</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<test>${single.it.test}</test>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
,然后调用编译如下:
mvn clean install -Dsingle.it.test=SampleIT
因此,Maven会根据值的存在对于single.it.test
亲activate the profile并且将它传递给Failsafe插件(或者Surefire,如果是这种情况)的test
属性,Failsafe将忽略该执行的任何其他集成测试,并且其他模块不会受到任何影响(忽略该属性)。