我有一个 Maven 构建,其中使用 SureFire 插件来运行一些单元测试,并使用 FailSafe 插件来运行一些集成测试。我想要一种只运行 FailSafe 插件测试的方法。
对于我来说,在 pom 中添加不同的配置文件或任何内容并不是一个好的解决方案,因为它是一个多模块构建,我不想编辑每个模块的 pom。
有skip.tests
and maven.test.skip
and skipTests
哪个站all测试,以及skipITs http://maven.apache.org/plugins/maven-failsafe-plugin/verify-mojo.html#skipITs,这仅停止故障安全插件。
那么,Maven 是否有一个像这样的命令行标志skipITs
,而是使用“onlyITs”的功能?
我发现仅跳过 Surefire 测试的最简单方法是配置 Surefire (但不安全) 如下:
<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
并且只有万无一失的测试才会被跳过;它还将运行所有其他必要的阶段,包括集成前和集成后,并且还将运行verify
实际需要的目标你的 Maven 构建失败如果您的集成测试失败。
请注意,这重新定义了用于指定应跳过测试的属性,因此如果您提供规范-DskipTests=true
,surefire 会忽略它,但failsafe 会尊重它,这可能是意外的,特别是如果您已经有现有的构建/用户指定了该标志。一个简单的解决方法似乎是默认的skip.surefire.tests
的值skipTests
在你的<properties>
pom 部分:
<properties>
<skip.surefire.tests>${skipTests}</skip.surefire.tests>
</properties>
如果需要,您可以提供一个类似的参数,称为skip.failsafe.tests
对于故障安全,但是我没有发现有必要 - 因为单元测试通常在早期阶段运行,如果我想运行单元测试而不是集成测试,我会运行test
相而不是verify
阶段。您的经历可能会有所不同!
These skip.(surefire|failsafe).tests
属性可能应该集成到 Surefire/Failsafe 代码本身中,但我不确定它会在多大程度上违反“除了 1 个微小的差异之外,它们是完全相同的插件”的精神。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)