跳到主要内容

maven测试指定测试方法

· 阅读需 2 分钟
Apache王也道长
软件开发者与技术作者

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”:

  1. 检查类名和方法名是否拼写正确。
  2. 确认测试位于 src/test/java
  3. 检查测试框架是否被 Surefire 正确识别。
  4. 查看父 POM 中是否覆盖了 Surefire 的包含或排除规则。
  5. 多模块项目确认 -pl 选择的是包含该测试的模块。

单元测试与集成测试

mvn test 一般由 Surefire 执行单元测试。使用 Failsafe 插件的集成测试通常在 integration-testverify 阶段运行:

mvn verify

如果指定测试没有运行,还应确认该测试属于单元测试还是集成测试。

本文阅读量:--

总访问量 -- · 访客数 --