java - 如何使用 Maven 与 JUnit5 标记
问题描述
有没有办法只运行每个给定标签的测试?例如,我们可以只用tag1
AND运行测试tag2
吗?
我们使用 Maven 3.6.2 和 2.22.2 版的 Surefire 和 JUnit 5.5.2 来针对许多应用程序 API 端点运行测试。每个测试至少有 3 个标签指定测试类型、应用程序和方法类型。有些有更多。
我们目前正在从命令行运行我们的测试,以便让测试人员控制每次运行:
mvn test -Dgroups=app1,fast
我们遇到的问题是上面将运行所有标记为app1
OR的测试fast
。结果是运行了几十个测试。测试人员的目标是只为“app1”运行“快速”测试。
虽然可以使用excludedGroups
,但在运行之前这对测试人员没有帮助。此外,我们每天都在添加测试和标签,所以今天有效的东西明天可能就无效了。
我们的目标之一是在命令行上启用标签规范,并且不需要测试人员编辑 POM 来运行不同的测试组合。我们想从命令行指定我们的测试集,而不必在运行之间接触 POM。由于测试组合的列表不断增加,我们的 POM 将变得太大而无法有效管理。
是否可以使用 Surefire 将 JUnit5 标记组合在一起?
解决方案
在 Maven Surefire/Maven Failsafe 中,您可以像前面提到的那样定义组,但您可以为 JUnit Jupiter(又名 JUnit 5)定义它,如下所示:
mvn test -Dgroups="app1&fast"
或者
mvn test -Dgroups="app1|fast"
有关更多详细信息,请查看文档。
顺便说一句:我建议升级到最新版本的maven-surefire-plugin或maven-failsafe-plugin。
推荐阅读
- swift - 单击快速导航栏中的后退按钮时如何打开确认窗口以向前移动?
- html - 两列布局中图像旁边的文本
- python - Python OpenCV cv2.threshold 在图像(jpg)中找不到水平直线/行
- apache-spark - 如何在 HDP (Hothonworks) 上运行 Spark 3.0.0?
- amazon-product-api - 如何将亚马逊会员链接归因于亚马逊产品 API?
- sql - 如何删除与原始重复的行?
- powershell - 将 Broadcom 模块与 Powershell 连接
- highcharts - 时刻 js 与 highstock
- php - Symfony 5 - PhpUnit Panther:此版本的 ChromeDriver 仅支持 Chrome 版本 80
- java - 一键编辑距离