maven-surefire-plugin 是 maven 默认执行 java 单元测试的核心插件,自动运行符合命名规范(如*test.java)且位于 src/test/java 下的测试类;支持命令行指定单类、单方法或排除测试;可自定义 includes、junit 5 引擎及跳过配置;兼容主流 ide 与 ci 环境。

maven-surefire-plugin 是 Maven 中默认负责执行 Java 单元测试的核心插件,只要项目结构规范、测试类命名合规,mvn test 就能自动运行所有匹配的测试用例,无需额外配置。
确保测试类符合 Surefire 默认命名规则
该插件默认只识别以下四种命名模式的测试类(大小写敏感):
-
**/Test*.java —— 如
TestCalculator.java -
**/*Test.java —— 如
CalculatorTest.java -
**/*Tests.java —— 如
CalculatorTests.java -
**/*TestCase.java —— 如
CalculatorTestCase.java
测试类必须放在 src/test/java 下,且使用 JUnit 4/5 或 TestNG 的标准注解(如 @Test),才能被正确加载和执行。
按需指定单个测试类或方法运行
开发调试时,常需快速验证某个类或方法,可通过命令行参数精准控制:
- 运行单个测试类:
mvn test -Dtest=CalculatorTest - 运行类中指定方法:
mvn test -Dtest=CalculatorTest#testAdd - 运行多个方法(JUnit 5+):
mvn test -Dtest=CalculatorTest#testAdd+testSubtract - 排除某个测试:
mvn test -Dtest=!IntegrationTest
这些参数直接作用于 surefire:test 目标,不修改 pom.xml,适合临时调试。
自定义 Surefire 插件配置(应对非标场景)
当测试类来自代码生成器、命名不规范,或需启用特定测试引擎时,需在 pom.xml 中显式配置:
- 覆盖默认包含规则(例如支持
*UnitTest.java):**/*UnitTest.java - 显式声明 JUnit 5 引擎依赖(Maven 3.8+ 推荐):
org.junit.jupiter junit-jupiter-engine - 跳过测试阶段(慎用):
true 或mvn test -Dmaven.test.skip=true
集成 IDE 与持续构建环境
IntelliJ IDEA、VSCode(配合 Extension Pack for Java)、Eclipse 均能识别 pom.xml 中的 Surefire 配置,并支持图形化运行单个测试类或方法。在 CI 环境(如 Jenkins、GitHub Actions)中,只需执行 mvn clean test,即可触发完整测试流程并生成标准 Surefire 报告(位于 target/surefire-reports/)。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











