JUnit5+Surefire环境下同时运行pom指定测试与额外测试类的方法
解决方案
场景1:pom中仅配置了基础include规则、无复杂自定义排除逻辑(绝大多数常规项目场景)
无需修改任何项目配置,直接使用以下单条命令即可实现需求,只会触发一次测试构建流程:
mvn test -Dtest="*,ExtraTestClass"
命令中的*会匹配所有原有默认mvn test会执行的测试类,逗号后追加的ExtraTestClass会额外运行不在原有include范围内的指定测试类。
注意:该写法优先级高于pom中配置的exclude规则,如果你原有配置有自定义排除的测试类,该写法会把这些排除类也纳入执行范围,有这类需求请用下方案
场景2:pom中有复杂自定义include/exclude规则
只需要做一次轻量的pom配置改造,后续即可无侵入追加任意测试类执行,完全不影响原有默认测试逻辑:
- 在pom.xml的
properties节点新增默认测试包含规则的属性占位符,把原有surefire配置的全部include规则挪到该属性中:
<properties> <!-- 示例为原有include规则,按你实际配置填写即可,多条规则用逗号分隔 --> <default.test.includes>**/biz/*Test.java,**/service/*Test.java</default.test.includes> </properties>
- 调整surefire插件的include配置为引用上述属性:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.2.2</version> <!-- 保持你现有版本即可,2.22.0+版本均支持该特性 --> <configuration> <includes> <include>${default.test.includes}</include> </includes> <!-- 原有其余配置保持不变 --> </configuration> </plugin>
- 需要追加ExtraTestClass执行时,运行以下命令即可:
mvn test -Ddefault.test.includes="${default.test.includes},**/ExtraTestClass.java"
内容的提问来源于stack exchange,提问作者sensenkri
相关产品推荐
相关产品推荐

