如何在 Maven 项目中正确运行单元测试

夏萱吖_8915

夏萱吖_8915

2026-05-11

672人浏览

原创

如何在 Maven 项目中正确运行单元测试

Maven 默认不自动启用测试执行机制,需显式配置 Surefire 插件才能通过 mvn test 运行 src/test/java 下的测试类;IntelliJ 能直接运行测试是因为其内置了独立的测试引擎,与 Maven 构建生命周期无关。

maven 默认不自动启用测试执行机制,需显式配置 surefire 插件才能通过 `mvn test` 运行 `src/test/java` 下的测试类;intellij 能直接运行测试是因为其内置了独立的测试引擎,与 maven 构建生命周期无关。

在标准 Maven 项目中,mvn test 命令本身是合法的,但它能否真正发现并执行测试,取决于是否已激活并正确配置 maven-surefire-plugin。该插件是 Maven 官方推荐且事实标准的单元测试执行器——它负责扫描测试源码、加载测试框架(如 JUnit 5 或 TestNG)、运行测试用例,并生成标准化的测试报告。

虽然你未在 pom.xml 中显式声明 Surefire 插件,但 Maven 3.0+ 确实为 maven-surefire-plugin 提供了默认绑定版本(例如 Maven 3.8.6 默认使用 Surefire 2.22.2)。然而,该默认行为仅在满足严格命名与结构约定时才生效,常见失败原因包括:

  • 测试类未遵循命名规范(如未以 Test 结尾,或不含 *Test, *Tests, Test* 等默认匹配模式);
  • 测试方法未使用 @Test 注解(JUnit 4/5)或未被测试框架识别;
  • 缺少必要的测试依赖(如 junit-jupiter),导致 Surefire 无法解析测试类;
  • src/test/java 目录未被 Maven 正确识别为测试源根(可通过 mvn help:effective-pom 验证)。

✅ 正确解决方案:显式声明 Surefire 插件(推荐方式)
在 pom.xml 的 段中添加以下配置(使用最新稳定版,截至 2024 年推荐 3.2.5):

<build><pluginmanagement><plugins><plugin><groupid>org.apache.maven.plugins</groupid><artifactid>maven-surefire-plugin</artifactid><version>3.2.5</version><configuration><!-- 可选:显式指定测试类匹配模式 --><includes><include>**/*Test.java</include><include>**/Test*.java</include></includes><!-- 若使用 JUnit 5,确保包含此配置 --><usemodulepath>false</usemodulepath></configuration></plugin></plugins></pluginmanagement></build>

⚠️ 注意: 仅声明配置,不自动启用插件;若项目无其他插件覆盖,mvn test 仍会生效。更严格的写法是将 块移至 (非 )下以确保启用。

✅ 验证与运行
配置完成后,执行:

mvn clean test

Maven 将重新编译测试代码、启动 Surefire 并输出类似以下日志:

[INFO] --- maven-surefire-plugin:3.2.5:test (default-test) @ your-project ---
[INFO] Tests are skipped.
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

? 为什么 IntelliJ 可以不配插件就运行?
IntelliJ IDEA 并未调用 Maven 的 test 生命周期,而是直接使用其内置的 JUnit/TestNG 运行器,读取项目结构、classpath 和注解元数据,绕过了 Maven 插件机制。这属于 IDE 集成能力,不可替代构建脚本的可重现性。

? 额外提示:

  • 若需运行单个测试类:mvn -Dtest=xyzTest test
  • 若需跳过测试(不推荐用于 CI):mvn test -Dmaven.test.skip=true
  • 检查测试是否被识别:mvn surefire:test-help 查看当前配置与扫描路径

总之,为保障构建一致性、CI/CD 兼容性及团队协作可靠性,显式声明 Surefire 插件不是“多余步骤”,而是 Maven 工程化的必要实践。

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

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

下载

相关标签:

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

相关专题

更多
Java Maven专题
Java Maven专题

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

2025.09.15

3980

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

369

25

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

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

2023.10.13

4790

8

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

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

2023.10.23

3181

10

Java 单元测试
Java 单元测试

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

2025.10.24

1126

26

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

20

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

20

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

20

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

热门下载

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

精品课程

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

共6课时 | 54.7万人学习

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

共89课时 | 133.9万人学习