我发现只跳过surefire测试的最简单方法是配置surefire(但不是failsafe),如下所示:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14</version>
<configuration>
<!-- skips surefire tests without skipping failsafe tests.
Property value seems to magically default to false -->
<skipTests>${skip.surefire.tests}</skipTests>
</configuration>
</plugin>
这使您可以运行mvn verify -Dskip.surefire.tests
,并且只会跳过可靠的测试,而不是故障安全的测试;它还将运行所有其他必要的阶段,包括预集成和后集成,并且还将运行如果您的集成测试失败时实际使您的 Maven 构建失败verify
所需的目标。
请注意,这重新定义了用于指定应跳过测试的属性,因此如果您提供 canonical -DskipTests=true
,surefire 将忽略它,但故障安全将尊重它,这可能是意外的,特别是如果您有现有的构建/用户已经指定该标志。一个简单的解决方法似乎是默认skip.surefire.tests
为skipTests
您<properties>
的 pom 部分中的值:
<properties>
<skip.surefire.tests>${skipTests}</skip.surefire.tests>
</properties>
如果需要,您可以提供一个称为skip.failsafe.tests
故障安全的类比参数,但是我认为没有必要 - 因为单元测试通常在早期阶段运行,如果我想运行单元测试而不是集成测试,我会运行test
相位而不是相位verify
。您的经历可能会有所不同!
这些skip.(surefire|failsafe).tests
属性可能应该集成到surefire/failsafe代码本身中,但我不确定它会在多大程度上违反“它们是完全相同的插件,除了1个微小的差异”精神。