在 Maven 中配置 maven-surefire-plugin 自定义测试运行规则,需通过 显式指定非标准命名的测试类(如 **/Api*Test.java),用 排除特定测试(优先级高于 includes),设置 指向生成测试目录,并可配置框架版本、并发执行、JVM 复用及系统属性。

在 Maven 中配置 maven-surefire-plugin 自定义测试运行规则,核心是覆盖其默认的扫描逻辑(如只认 Test*.java、*Test.java 等命名模式),让插件能识别并执行你自定义命名的测试类,比如生成的测试、非标准命名的集成测试或特定模块的测试。
明确包含特定命名模式的测试类
当你的测试类不满足 Surefire 默认命名规则(例如叫 ApiContractTest.java、GeneratedValidationTest.java 或 SmokeSuite.java),需用 显式声明匹配路径:
- 在
pom.xml的中配置 surefire 插件(版本建议 3.0.0-M9+) - 在
内添加块,每个是 Ant 风格通配符 - 常见写法示例:
<includes><br><include>**/Api*Test.java</include><br><include>**/Generated*.java</include><br><include>**/Smoke*.java</include><br></includes>
排除不需要运行的测试类
用于跳过某些耗时、环境依赖强或已知不稳定的测试,避免干扰构建流程:
- 使用
配合通配符,语法与一致 - 可排除单个文件:
**/IntegrationTimeoutTest.java - 也可排除整类命名模式:
**/*IntegrationTest.java - 注意:
优先级高于,即同时配置时,被 exclude 的路径不会被执行
指定测试源目录(适用于生成式测试)
若测试代码由插件(如 build-helper-maven-plugin)生成到非标准路径(如 target/generated-test-sources),Surefire 默认不扫描该目录:
- 需配合
显式指向实际测试源位置 - 例如:
${project.build.directory}/generated-test-sources - 确保该目录已在编译阶段被正确加入 classpath(通常由 build-helper 插件完成)
按测试框架或 JVM 参数定制行为
不同测试框架或运行环境可能需要额外控制:
- 指定测试框架版本(如 JUnit 5):
1.10.0 - 启用并发执行提升速度:
(使用 2 个 CPU 核心)2C - 控制 JVM 复用以减少开销:
true - 传递系统属性供测试读取:
dev
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











