maven测试指定测试方法
· 阅读需 2 分钟
Maven 项目通常通过 Surefire 插件执行单元测试。开发和排查问题时,可以只运行某个测试类或测试方法,减少等待时间并快速验证修改结果。
运行全部单元测试
mvn test
该命令会执行当前模块中测试源码目录下符合命名规则的单元测试。
如果希望先清理旧的编译结果:
mvn clean test
指定测试类
使用测试类的简单类名:
mvn test -Dtest=UserServiceTest
也可以匹配多个测试类:
mvn test -Dtest=UserServiceTest,OrderServiceTest
使用通配符运行一组测试:
mvn test -Dtest='*ServiceTest'
在部分 Shell 中,* 会被展开,因此建议给表达式加引号。
指定测试方法
基本格式:
mvn test -Dtest=测试类名#测试方法名
例如:
mvn test -Dtest=UserServiceTest#shouldCreateUser
如果方法是参数化测试或生成了多个用例,实际匹配能力取决于项目所使用的 JUnit 和 Surefire 版本。
多模块项目指定模块
使用 -pl 选择需要测试的模块:
mvn test -pl seata-spring-autoconfigure \
-Dtest=org.apache.seata.spring.boot.autoconfigure.SeataCoreAutoConfigurationTest \
-Dspring-boot.version=3.2.0 \
-Dspring-framework.version=6.1.1
常用参数:
-pl module-name:只选择指定模块。-am:同时构建该模块依赖的其他模块。-amd:同时构建依赖该模块的下游模块。
例如:
mvn test -pl user-service -am -Dtest=UserServiceTest
没有匹配到测试时
如果出现“No tests were executed”或“No tests matching pattern”:
- 检查类名和方法名是否拼写正确。
- 确认测试位于
src/test/java。 - 检查测试框架是否被 Surefire 正确识别。
- 查看父 POM 中是否覆盖了 Surefire 的包含或排除规则。
- 多模块项目确认
-pl选择的是包含该测试的模块。
单元测试与集成测试
mvn test 一般由 Surefire 执行单元测试。使用 Failsafe 插件的集成测试通常在 integration-test 和 verify 阶段运行:
mvn verify
如果指定测试没有运行,还应确认该测试属于单元测试还是集成测试。