You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不实际运行的情况下列出`mvn test`命令将要执行的测试用例?

Maven Surefire插件:如何仅预览待执行的测试用例(不实际运行)?

先聊聊Surefire插件默认的测试类识别规则——它会自动通过以下通配符匹配所有要执行的测试类:

  • **/Test*.java:包含所有子目录中文件名以"Test"开头的Java文件
  • **/*Test.java:包含所有子目录中文件名以"Test"结尾的Java文件
  • **/*Tests.java:包含所有子目录中文件名以"Tests"结尾的Java文件
  • **/*TestCase.java:包含所有子目录中文件名以"TestCase"结尾的Java文件

但实际开发中,我们经常会遇到这类场景:项目里有大量耗时的测试用例,或者混合了JUnit4和JUnit5的测试代码,要是每次都得手动排查哪些测试会被执行(尤其是之前跳过了单元测试的情况),真的很浪费时间。这时候很多人都会问:能不能只做个"空运行",只查看将要被执行的测试用例清单,不用实际跑测试?

先给你看一段正常测试执行时的输出示例:


T E S T S

Running JUnitAndMockitoWorksTest
Running JUnit4AndMockitoWorksTest
Running JUnit5AndMockitoWorksTest

那回到核心问题:有没有办法实现这种预览?

之前有个Maven相关的讨论提到过一个第三方维护的feature/dryrun分支的Surefire插件,但这个分支已经整整9年没有更新了,完全无法支持JUnit5这类新特性,根本没法在现代项目里使用。

不过别担心,Surefire插件本身其实提供了官方的解决方案——你可以使用test目标配合-Dsurefire.printTestsOnly=true参数,这个参数会让插件只输出所有匹配规则的测试类列表,而不会实际执行任何测试用例。

举个实际的命令示例:

mvn test -Dsurefire.printTestsOnly=true

执行这个命令后,你就能看到所有将要被运行的测试类清单,完美满足预览需求,而且对JUnit4、JUnit5都能很好地兼容,比那个过时的第三方分支靠谱多了。


内容的提问来源于stack exchange,提问作者Paul Verest on LinkedIn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 12:42:35