微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

阻止单元测试,但允许在 Maven 中进行集成测试

如何解决阻止单元测试,但允许在 Maven 中进行集成测试

我发现只跳过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,并且只会跳过可靠的测试,而不是故障安全的测试;它还将运行所有其他必要的阶段,包括预集成和后集成,并且还将运行如果您的集成测试失败时实际使*

请注意,这重新定义了用于指定应跳过测试的属性,因此如果您提供 canonical -DskipTests=true,surefire 将忽略它,但故障安全将尊重它,这可能是意外的,特别是如果您有现有的构建/用户已经指定该标志。一个简单的解决方法似乎是skip.surefire.testsskipTests<properties>的 pom 部分中的值:

<properties>
    <skip.surefire.tests>${skipTests}</skip.surefire.tests>
</properties>

如果需要,您可以提供一个称为skip.failsafe.tests故障安全的类似参数,但我认为没有必要 - 因为单元测试通常在较早的阶段运行,如果我想运行单元测试而不是集成测试,我会运行test相位而不是相位verify。您的经历可能会有所不同!

这些skip.(surefire|failsafe).tests属性可能应该集成到surefire/failsafe代码本身中,但我不确定它会在多大程度上违反“它们是完全相同的插件,除了1个微小的差异”精神。

解决方法

我有一个 Maven 构建,在其中我使用 SureFire 插件运行一些单元测试,并使用 FailSafe 插件运行一些集成测试。我想要一种只运行
FailSafe 插件测试的方法。

在 pom 中添加不同的配置文件或任何内容对我来说不是一个好的解决方案,因为它是一个多模块构建,我不想编辑每个模块的 pom。

skip.testsand停止 所有 测试,andmaven.test.skip仅停止故障保护插件。skipTests
__skipITs

那么,是否有类似 Maven 的命令行标志skipITs,但具有“onlyITs”的功能?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。