Gradle怎么生成XML报告
发布时间 - 2025-12-30 00:00:00 点击率:次Gradle test任务默认不生成XML报告,需在build.gradle中显式配置junitXml.required = true,路径为build/test-results/test/,文件名如TEST-MyTestClass.xml。
Gradle测试任务默认不生成XML报告
Gradle的 test 任务默认只输出控制台日志和二进制结果(TEST-*.bin),不会自动生成JUnit风格的XML报告。如果你在CI里看到“找不到TEST-*.xml”或Jenkins/JUnit插件报解析失败,大概率是因为这个默认行为没被覆盖。
启用XML报告需显式配置 test 任务
必须在 build.gradle(Groovy)或 build.gradle.kts(Kotlin DSL)中手动开启XML输出,且要指定格式为 JUNIT。默认的 PLAIN 或 HTML 都不产生XML。
- Groovy写法:
test { reports { junitXml.required = true html.required = false } } - Kotlin DSL写法:
tasks.test { reports { junitXml.required.set(true) html.required.set(false) } } - 生成路径固定为
build/test-results/test/,文件名形如TEST-MyTestClass.xml - 注意:Gradle 7.6+ 中
junitXml.enabled已废弃,必须用required属性
使用 --no-build-cache 或清理可能影响报告生成
如果之前执行过 test 且失败过,Gradle可能跳过后续执行(尤其启用了构建缓存或增量编译),导致XML文件没更新甚至缺失。常见现象是目录里只有旧的 .bin 文件,没有新 .xml。
- 强制重新运行测试:
./gradlew cleanTest test - 禁用缓存避免跳过:
./gradlew test --no-build-cache - 检查输出是否真被触发:
./gradlew test --info | grep "Generating XML report"
第三方测试框架(如TestNG、Spock)需要额外适配
Gradle原生只对JUnit(包括JUnit 4/5)的 junitXml 报告有开箱支持。用 testng 或 spock 时,即使配置了 junitXml.required = true,也只会生成空文件或报错。
- TestNG:需添加
useTestNG()并确认使用org.testng:testng≥7.0,旧版不兼容 - Spock:必须搭配JUnit Platform Launcher,且在
test块中显式声明:useJUnitPlatform { includeEngines 'spock' } - 验证是否生效:运行后检查
build/test-results/test/下是否有非零大小的.xml文件,而不是只看目录是否存在
与插件的匹配。最容易忽略的是——你以为任务运行了,其实被跳过了。
# html
# ai
# jenkins
# red
# kotlin
# junit
# xml
# gradle
# 跳过
# 的是
# 是因为
# 都不
# 找不到
# 你在
# 开了
# 只会
# 报错
# 只看
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何配置任务调度?(Cron Job示例)
在centOS 7安装mysql 5.7的详细教程
Python函数文档自动校验_规范解析【教程】
大学网站设计制作软件有哪些,如何将网站制作成自己app?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
魔毅自助建站系统:模板定制与SEO优化一键生成指南
如何用AI帮你把自己的生活经历写成一个有趣的故事?
如何确保FTP站点访问权限与数据传输安全?
bootstrap日历插件datetimepicker使用方法
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
如何快速生成ASP一键建站模板并优化安全性?
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
Laravel distinct去重查询_Laravel Eloquent去重方法
Swift中switch语句区间和元组模式匹配
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
在线制作视频的网站有哪些,电脑如何制作视频短片?
如何在IIS中配置站点IP、端口及主机头?
如何快速搭建虚拟主机网站?新手必看指南
C++时间戳转换成日期时间的步骤和示例代码
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
微信小程序 配置文件详细介绍
Laravel如何发送系统通知?(Notification渠道示例)
jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】
佛山网站制作系统,佛山企业变更地址网上办理步骤?
Laravel如何实现API资源集合?(Resource Collection教程)
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
如何在云主机上快速搭建多站点网站?
如何在IIS中新建站点并解决端口绑定冲突?
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
如何在建站主机中优化服务器配置?
如何在万网主机上快速搭建网站?
UC浏览器如何设置启动页 UC浏览器启动页设置方法
Laravel怎么判断请求类型_Laravel Request isMethod用法
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
高端云建站费用究竟需要多少预算?
iOS正则表达式验证手机号、邮箱、身份证号等
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
如何撰写建站申请书?关键要点有哪些?
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
如何挑选最适合建站的高性能VPS主机?
如何在搬瓦工VPS快速搭建网站?
javascript如何操作浏览器历史记录_怎样实现无刷新导航
iOS发送验证码倒计时应用
如何在IIS7中新建站点?详细步骤解析

