首页 > 解决方案 > 如何使用 Maven 与 JUnit5 标记

问题描述

有没有办法只运行每个给定标签的测试?例如,我们可以只用tag1AND运行测试tag2吗?

我们使用 Maven 3.6.2 和 2.22.2 版的 Surefire 和 JUnit 5.5.2 来针对许多应用程序 API 端点运行测试。每个测试至少有 3 个标签指定测试类型、应用程序和方法类型。有些有更多。

我们目前正在从命令行运行我们的测试,以便让测试人员控制每次运行:

mvn test -Dgroups=app1,fast

我们遇到的问题是上面将运行所有标记为app1OR的测试fast。结果是运行了几十个测试。测试人员的目标是只为“app1”运行“快速”测试。

虽然可以使用excludedGroups,但在运行之前这对测试人员没有帮助。此外,我们每天都在添加测试和标签,所以今天有效的东西明天可能就无效了。

我们的目标之一是在命令行上启用标签规范,并且不需要测试人员编辑 POM 来运行不同的测试组合。我们想从命令行指定我们的测试集,而不必在运行之间接触 POM。由于测试组合的列表不断增加,我们的 POM 将变得太大而无法有效管理。

是否可以使用 Surefire 将 JUnit5 标记组合在一起?

标签: javamavenjunit5maven-surefire-plugin

解决方案


在 Maven Surefire/Maven Failsafe 中,您可以像前面提到的那样定义,但您可以为 JUnit Jupiter(又名 JUnit 5)定义它,如下所示:

mvn test -Dgroups="app1&fast"

或者

mvn test -Dgroups="app1|fast"

有关更多详细信息,请查看文档。

顺便说一句:我建议升级到最新版本的maven-surefire-pluginmaven-failsafe-plugin


推荐阅读