Maven 中使用 JUnit 5 @Tag 运行指定标签测试的完整配置指南

阿瑶酱_8621

阿瑶酱_8621

2026-05-28

190人浏览

原创

本文详解如何在 Maven 中正确配置 Surefire 插件,通过 JUnit 5 的 @Tag 注解(如 @Tag("one"))精准执行标记测试,重点解决因测试类命名不匹配默认规则导致“0 个测试运行”的常见问题。

本文详解如何在 maven 中正确配置 surefire 插件,通过 junit 5 的 `@tag` 注解(如 `@tag("one")`)精准执行标记测试,重点解决因测试类命名不匹配默认规则导致“0 个测试运行”的常见问题。

在 Maven + JUnit 5 项目中,仅靠 one 配置或 -Dgroups=one 命令参数不足以触发标签化测试执行——前提是你的测试类未遵循 Surefire 默认的命名约定(如 *Test.java、Test*.java 等)。这是绝大多数开发者遇到 mvn test 执行 0 个测试的根本原因。

Surefire 插件默认仅扫描符合以下通配符模式的 Java 类文件:

  • **/Test*.java
  • **/*Test.java
  • **/*Tests.java
  • **/*TestCase.java

而你的测试类名为 BubblegumApiIT.java(以 IT 结尾,属集成测试常见命名),不满足任一默认模式,因此 Surefire 根本不会加载该类,更不会解析其中的 @Tag("one") ——自然无法执行。

✅ 正确解决方案是显式告知 Surefire 哪些类需要被包含,有以下两种推荐方式:

方式一:在 pom.xml 中配置 (推荐)

<build><plugins><plugin><groupid>org.apache.maven.plugins</groupid><artifactid>maven-surefire-plugin</artifactid><version>3.0.0</version><!-- 建议使用稳定版,M5 存在已知兼容性问题 --><configuration><groups>one</groups><includes><include>**/*IT.java</include><!-- 匹配所有集成测试类 --><!-- 或更精确地: --><!-- <include>**/BubblegumApiIT.java</include> --></includes></configuration></plugin></plugins></build>

方式二:使用命令行动态指定(适合临时调试)

mvn -Dgroups=one -Dsurefire.includes="**/*IT.java" test

⚠️ 注意:-Dsurefire.includes 是 Surefire 3.0+ 引入的系统属性,等价于 配置;旧版本需用 -Dincludes=(但不推荐降级)。

补充说明与最佳实践

  • ✅ @Tag 是 JUnit 5 原生支持的语义化分组机制,完全替代旧版 @Category;
  • ✅ 可组合使用多标签:@Tag("one") @Tag("integration"),并通过逗号分隔运行:one,integration;
  • ⚠️ 确保测试类位于 src/test/java 下,且 maven-compiler-plugin 已正确配置 Java 版本(JUnit 5 要求 ≥ Java 8);
  • ? 验证是否生效:添加 -X 参数查看 Surefire 日志,搜索 Running [.*] 和 Tests run: 行确认实际执行类名;
  • ? 若同时存在单元测试(*Test.java)和集成测试(*IT.java),建议分离执行生命周期(如用 maven-failsafe-plugin 运行 *IT.java),避免混淆。

只要确保测试类被 Surefire 发现并加载, 或 -Dgroups 才能真正生效。命名规范不是约束,而是约定——而 是你掌控这一约定的明确契约。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Java Maven专题
Java Maven专题

本专题聚焦 Java 主流构建工具 Maven 的学习与应用,系统讲解项目结构、依赖管理、插件使用、生命周期与多模块项目配置。通过企业管理系统、Web 应用与微服务项目实战,帮助学员全面掌握 Maven 在 Java 项目构建与团队协作中的核心技能。

2025.09.15

3460

19

Java Maven/Gradle 构建与依赖管理合集
Java Maven/Gradle 构建与依赖管理合集

系统讲解 Java 项目构建工具的使用与进阶配置,涵盖 Maven 的 POM 文件结构、生命周期(clean/compile/package/install/deploy)与插件机制、依赖范围(compile/provided/test/runtime)与传递依赖管理、多模块聚合与继承、私有 Nexus 仓库发布,以及 Gradle 的 Groovy / Kotlin DSL 语法、Task 自定义与增量构建、依赖版本目录(Versi

2026.05.09

349

25

软件测试常用工具
软件测试常用工具

软件测试常用工具有Selenium、JUnit、Appium、JMeter、LoadRunner、Postman、TestNG、LoadUI、SoapUI、Cucumber和Robot Framework等等。测试人员可以根据具体的测试需求和技术栈选择适合的工具,提高测试效率和准确性 。

2023.10.13

4430

8

java测试工具有哪些
java测试工具有哪些

java测试工具有JUnit、TestNG、Mockito、Selenium、Apache JMeter和Cucumber。php还给大家带来了java有关的教程,欢迎大家前来学习阅读,希望对大家能有所帮助。

2023.10.23

2841

10

Java 单元测试
Java 单元测试

本专题聚焦 Java 在软件测试与持续集成流程中的实战应用,系统讲解 JUnit 单元测试框架、Mock 数据、集成测试、代码覆盖率分析、Maven 测试配置、CI/CD 流水线搭建(Jenkins、GitHub Actions)等关键内容。通过实战案例(如企业级项目自动化测试、持续交付流程搭建),帮助学习者掌握 Java 项目质量保障与自动化交付的完整体系。

2025.10.24

1046

26

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

2026.10.10

20

15

Kratos框架HTTP与gRPC服务开发教程
Kratos框架HTTP与gRPC服务开发教程

本专题围绕Kratos框架双协议服务开发,涵盖HTTP路由与处理器编写、参数获取、gRPC服务实现与客户端调用、metadata上下文传递、encoding编解码注册、统一响应封装、超时控制与流式响应实现方法。

2026.10.10

20

15

Kratos框架Protobuf接口定义与代码生成合集
Kratos框架Protobuf接口定义与代码生成合集

本专题讲解Kratos框架接口定义体系,涵盖proto编写规范、proto add/client/server生成命令、http注解路由、validate校验、OpenAPI文档生成、跨服务proto复用与兼容性设计。

2026.10.10

0

15

C++虚函数怎么定义和调用
C++虚函数怎么定义和调用

C++虚函数是实现运行时多态的重要机制。本专题从virtual关键字的基本用法入手,介绍基类与派生类之间的函数重写、基类指针调用派生类方法,以及动态绑定的执行过程,帮助初学者掌握虚函数的核心语法。

2026.10.10

20

26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习