我发现仅跳过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
并且仅跳过surefire(而非故障安全)测试;它还将运行所有其他必要阶段,包括集成前和集成后,并且还将运行verify
目标,如果集成测试失败,该目标实际上会使您的maven构建失败。
请注意,这重新定义了用于指定应跳过测试的属性,因此,如果提供了canonical属性-DskipTests=true
,则surefire将忽略它,但failsafe将尊重它,这可能是意外的,特别是如果您已经具有指定该标志的现有内部版本/用户。简单的解决方法似乎是默认skip.surefire.tests
的值设置为skipTests
您<properties>
聚甲醛的部分:
<properties>
<skip.surefire.tests>${skipTests}</skip.surefire.tests>
</properties>
如果需要,可以提供一个称为skip.failsafe.tests
故障安全的类似参数,但是我没有必要这样做-因为单元测试通常在较早的阶段运行,并且如果我要运行单元测试而不是集成测试,则可以运行的test
阶段,而不是verify
阶段。您的经历可能会有所不同!
这些skip.(surefire|failsafe).tests
属性可能应该集成到surefire / failsafe代码本身中,但是我不确定它会违反“除了1个细微差别之外,它们是完全相同的插件”的精神。
maven.test.skip
还是skipTests
?