替换弃用的reportOn方法,实现Gradle多Java项目测试报告聚合
解决Gradle多模块项目聚合测试报告
reportOn迁移testResults失效问题 问题本质
旧API reportOn直接关联测试结果文件路径,新API testResults需要绑定**Test任务的测试结果提供者**,而非手动指定目录。之前修改时误操作目录却未正确关联任务结果,导致报告无数据可生成。
正确配置(buildSrc/java-common.gradle)
1. 定义根项目聚合测试报告任务
// 注册根项目的聚合测试报告任务 tasks.register('testReport', TestReport) { // 自定义报告输出目录(可选,默认是$buildDir/reports/tests/testReport) destinationDirectory = file("$buildDir/reports/tests/aggregate") // 核心:收集所有子模块test任务的测试结果 testResults = subprojects.tasks.withType(Test).collect { it.testResults } }
2. 添加任务依赖保证执行顺序
确保生成报告前所有子模块测试已完成:
tasks.named('testReport') { dependsOn subprojects.tasks.withType(Test) }
3. 避坑要点
- 不要手动修改子模块的二进制测试结果目录:Gradle默认管理的路径是
testResults的默认数据源,手动修改会导致结果找不到 - 确认所有子模块都应用了
java插件:只有应用Java插件的模块才会生成test任务,其结果才能被收集 - 执行命令时建议先清理旧结果:
gradlew clean test testReport,避免旧数据干扰
验证
执行命令:
gradlew testReport
查看根项目build/reports/tests/aggregate目录,即可看到生成的HTML聚合测试报告。
内容的提问来源于stack exchange,提问作者SNGTO
相关产品推荐
相关产品推荐

