0

0

配置IDE的单元测试覆盖率报告_使用JaCoCo进行环境集成

P粉602998670

P粉602998670

发布时间:2026-02-18 13:59:27

|

223人浏览过

|

来源于php中文网

原创

根本原因是jacoco与idea覆盖率引擎互斥:idea直运测试不走maven配置,导致exec文件格式不兼容、路径错误、字节码未插桩;需确认运行方式、关闭idea覆盖率或正确配置agent及pom绑定。

配置ide的单元测试覆盖率报告_使用jacoco进行环境集成

JaCoCo 为什么在 IDEA 里跑不出覆盖率报告

根本原因不是插件没装,而是 jacoco-maven-plugin 和 IDEA 自带的覆盖率引擎(IntelliJ Coverage)默认互斥——IDEA 运行测试时压根不走 Maven 的 JaCoCo 配置,它用自己的探针逻辑,结果生成的 exec 文件格式不兼容、路径找不到、类加载器还可能跳过 instrumented 字节码。

  • 确认是否在 IDEA 中右键运行的是 Maven test(走 pom.xml 配置),而不是直接点绿色三角形运行 Test 类(走 IDEA Coverage)
  • 如果必须用 IDEA 绿色三角形,需关闭自带覆盖率:菜单 Run → Coverage → Show Coverage Data → 取消勾选 “Enable coverage for tests”,再手动配置 JaCoCo agent 启动参数
  • Maven 插件配置里 destFile 路径建议写绝对路径或基于 ${project.build.directory},避免 IDEA 工作目录和 Maven 不一致导致文件写到奇怪位置

mvn jacoco:report 报错 “Can't read execution data file”

执行该目标时报这个错,90% 是因为没先运行测试——jacoco:report 只负责把 .exec 转成 HTML,它不采集数据;真正生成 .exec 的是 jacoco:prepare-agent 或测试执行阶段。

  • 必须按顺序执行:mvn clean test(确保 jacoco-maven-pluginprepare-agent goal 已绑定到 test 生命周期)
  • 检查 pom.xml 中插件是否配置了 execution 绑定:<phase>process-test-classes</phase> 或更常见的 <phase>test</phase>
  • 验证 .exec 文件是否存在:ls target/jacoco.exec(默认路径),如果没生成,说明 agent 没生效,大概率是 JDK 版本 > 17 且没加 --add-opens 参数

Java 17+ 下 JaCoCo agent 启动失败或覆盖率归零

JDK 17 开始默认强封装内部 API,而 JaCoCo 早期版本(sun.misc.Unsafe 和反射修改类,会被 JVM 拦住,表现为测试能跑但覆盖率始终为 0,或启动时抛 java.lang.IllegalAccessError

LOGO.com
LOGO.com

在线生成Logo,100%免费

下载
  • 升级 JaCoCo 插件到 0.8.12 或更高(Maven 插件版本号不是 JaCoCo Core 版本,注意看官网对应关系)
  • maven-surefire-plugin 中显式添加 JVM 参数:<jvmarg>--add-opens java.base/java.lang=ALL-UNNAMED</jvmarg>,必要时补上 java.base/java.util=ALL-UNNAMED
  • 避免混用不同版本:Maven 插件版本、Core 版本、IDEA 内置 JaCoCo 库版本三者最好统一,尤其 IDEA 2023.2+ 自带 JaCoCo 0.8.11,若项目用 0.8.7 就容易冲突

覆盖率报告里显示 “No sources found” 或源码不显示

HTML 报告打开后只有包结构、没有 Java 文件内容,说明 JaCoCo 找不到源码路径。它不会自动从 classpath 或模块里反编译,必须明确告诉它源码在哪。

  • jacoco-maven-pluginreport execution 中配置 <sourcedirectories></sourcedirectories>,值应为 ${project.basedir}/src/main/java(多模块项目需列出所有模块的 src)
  • 如果用了 Lombok,确保 lombok.config 中没禁用 delombok,否则 JaCoCo 解析的是字节码而非原始注解后代码,行号对不上
  • IDEA 里查看覆盖率时,右键报告页面 → “Associate with Sources…”,手动指向本地 src/main/java 目录,否则它只认 Maven module 的 source root 定义

最麻烦的其实是多模块聚合报告——jacoco:report-aggregate 会合并所有子模块的 .exec,但每个模块的 sourceDirectory 必须单独配,漏一个,那一块就变灰。别指望父 POM 里统一写一次就能继承过去。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Java Maven专题
Java Maven专题

本专题聚焦 Java 主流构建工具 Maven 的学习与应用,系统讲解项目结构、依赖管理、插件使用、生命周期与多模块项目配置。通过企业管理系统、Web 应用与微服务项目实战,帮助学员全面掌握 Maven 在 Java 项目构建与团队协作中的核心技能。

0

2025.09.15

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1929

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2104

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

1126

2024.11.28

idea快捷键大全
idea快捷键大全

本专题为大家提供idea快捷键相关的文章,帮助大家解决问题。

173

2023.08.03

idea如何集成Tomcat
idea如何集成Tomcat

idea集成Tomcat的步骤:1、添加Tomcat服务器配置;2、配置项目部署;3、运行Tomcat服务器;4、访问项目;5、注意事项;6、关闭Tomcat服务器。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

170

2024.02.23

idea怎么配置maven
idea怎么配置maven

idea配置maven的步骤:1、打开intellij idea,并确保已安装maven integration插件,可以在"file"菜单中选择"settings",然后在"plugins"选项卡中搜索并安装maven integration插件等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

124

2024.02.23

eclipse和idea有什么区别
eclipse和idea有什么区别

eclipse和idea的区别:1、平台支持;2、内存占用;3、插件系统;4、智能代码提示;5、界面设计;6、调试功能;7、学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

148

2024.02.23

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

561

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号