如何在不执行测试的前提下获取Maven项目所有测试类及文件路径?
我有几个不用修改pom.xml的通用方案,帮你快速拿到所有测试类和对应的文件路径,而且完全不用跑测试用例:
方法1:用Surefire插件的Dry Run模式
直接在项目根目录执行这条命令就行,它会让Surefire插件扫描所有符合规则的测试类,但不会实际执行测试,还会在控制台输出找到的测试类信息:
mvn surefire:test -DdryRun=true
执行后你能在日志里看到类似这样的内容:
[INFO] --- maven-surefire-plugin:3.0.0:test (default-cli) @ your-project ---
[INFO] Tests are skipped.
[INFO] List of configured tests:
[INFO] com.example.MyFirstTest
[INFO] com.example.MySecondTest
从全限定类名就能反推出源码路径,比如com.example.MyFirstTest对应的就是src/test/java/com/example/MyFirstTest.java,这个路径规则在Maven项目里是通用的。
方法2:直接打印测试类列表
要是你只想快速拿到测试类的全限定名,用这条命令更直接——它会跳过测试执行,只输出Surefire识别到的所有测试类:
mvn surefire:test -DskipTests -Dsurefire.printTests
方法3:直接扫描源码目录
如果不想碰Maven命令,也可以用系统自带的命令行工具直接扫测试源码文件夹:
- Linux/macOS下用find命令:
find src/test/java -name "*Test.java" -type f
- Windows PowerShell下用这条:
Get-ChildItem -Path src/test/java -Filter *Test.java -Recurse -File
这种方式直接从源码目录捞所有测试类文件的绝对/相对路径,简单粗暴还靠谱。
补充一句:前两种方法依赖Surefire的默认规则(比如识别*Test.java、Test*.java这类命名的文件),如果你的项目有自定义的测试类命名规则也没关系,Surefire会自动遵循项目里已有的配置,不用你改pom.xml。
内容的提问来源于stack exchange,提问作者greenberet123

