Gradle复合构建中Test-report-aggregation插件使用问题排查
解决Gradle多模块测试报告聚合失败的问题
核心排查步骤
1. 确认插件在根项目的正确应用
test-report-aggregation插件必须在根项目的build.gradle里的plugins块中声明,示例配置:
plugins { id 'test-report-aggregation' }
注意:根项目不需要额外应用java或java-library插件,插件会自动处理子模块的报告收集逻辑。
2. 子模块需保证生成测试报告
每个子模块(first、second)必须应用java或java-library插件,并且确保测试任务生成XML格式报告(聚合插件依赖这个来收集数据),子模块配置示例:
plugins { id 'java' } test { reports { html.required = true // 生成子模块自己的HTML报告,可选但建议保留 xml.required = true // 这个是聚合必需的,默认开启,显式声明更稳妥 } }
3. 确保先执行子模块测试任务
聚合报告任务依赖子模块的test任务执行结果,你可以直接运行组合命令:
./gradlew test testAggregateTestReport
或者在根项目build.gradle里添加依赖,让聚合任务自动触发测试:
testAggregateTestReport.dependsOn subprojects.test
之后直接跑./gradlew testAggregateTestReport就行。
4. 找对报告生成路径
聚合报告默认生成在根项目的build/reports/tests/aggregateTestReport目录下,不是根build文件夹直接目录,别找错地方了。
5. 检查settings.gradle的子模块配置
确保settings.gradle里正确包含了两个子模块:
include ':first', ':second'
如果子模块不在根目录下,还要用project(':first').projectDir = file('你的子模块路径')指定位置。
6. 验证Gradle版本
test-report-aggregation是Gradle 7.4以后才有的插件,用./gradlew --version检查你的版本是否达标。
额外调试技巧
- 加
--info参数跑任务,看详细日志找问题:./gradlew testAggregateTestReport --info - 先确认子模块的
build/reports/tests/test目录里有index.html和TEST-*.xml文件,确保测试任务正常执行并输出了报告。
内容的提问来源于stack exchange,提问作者6605 SRINIVAS
相关产品推荐
相关产品推荐

