IntelliJ IDEA 2026.2 Help

代码覆盖率

在 IntelliJ IDEA 中,代码覆盖率让您分析特定运行期间执行了哪些代码行。 它有助于确定由测试覆盖的代码份额,并识别缺乏足够测试覆盖的领域。

启用 Code Coverage for Java 插件

此功能依赖于 Java 代码覆盖率插件,该插件在 IntelliJ IDEA 中默认捆绑并启用。 如果相关功能不可用,请确保您没有禁用插件。

  1. Ctrl+Alt+S 打开设置,然后选择 插件

  2. 打开 已安装 选项卡,找到 针对 Java 的代码覆盖率 插件,并选中插件名称旁边的复选框。

使用覆盖率运行

运行覆盖率分析的入口点与您通常用来 运行应用程序的相同:

  • 对于 main 方法定义,点击 运行 在编辑器装订线中,然后选择 使用覆盖率运行

    点击边框的 Run 图标时会出现一个弹出窗口
  • 要进行 运行配置 ,请点击 更多操作运行小组件中,然后选择 使用覆盖率运行

    点击运行小部件中的更多操作后会显示一个菜单
  • 对于 Gradle 任务,请转到 Gradle 工具窗口,右键点击任务,然后选择 使用覆盖率运行

    在 Gradle 工具窗口中点击任务时会出现一个菜单

覆盖分析会在附加 coverage agent 的情况下执行相应的运行配置。 此代理会修改字节码以逐行跟踪执行情况。 执行完成后,分析结果会出现在 IDE 中。

覆盖套件

覆盖率套件是某次特定运行的代码覆盖率数据集合 每个覆盖率套件都会存储来自单个运行配置(如果是 使用覆盖率运行 )或 导入的覆盖率数据文件的数据。

IntelliJ IDEA 将覆盖率套件存储在 coverage 文件夹的 IDE 系统目录中:

%LOCALAPPDATA%\JetBrains\IntelliJIdea%instance-version%\coverage

~/Library/Caches/JetBrains/IntelliJIdea%instance-version%/coverage

~/.cache/JetBrains/IntelliJIdea%instance-version%/coverage

IntelliJ IDEA 可以同时显示一个或多个覆盖率套件的结果,并可选择要显示哪些套件。 如果选中了多个套件,IDE 会显示它们的合并结果:也就是说,如果某个套件中某行被执行过,则认为该行已被覆盖。

选择要显示的覆盖率套件

  1. 在主菜单中,转到 运行 | 管理覆盖率报告…Ctrl+Alt+F6)。

  2. 在打开的 选择要显示的覆盖率套件 对话框中,选择要显示结果的套件。

    • 如果想隐藏所有代码覆盖率结果,请点击 无覆盖 这会取消选择所有覆盖率套件并关闭对话框。

    选择要显示的覆盖率套件对话框
  3. 点击 显示所选项

IntelliJ IDEA 会加载代码覆盖率结果并打开 覆盖率工具窗口

添加和移除覆盖率套件

如果想查看在 IntelliJ IDEA 之外(例如由构建服务器或其他开发者)生成文件中的代码覆盖率结果,可以将该文件单独添加为覆盖率套件 这适用于由 JaCoCo .exec .xml )和 IntelliJ IDEA 运行器( .ic )生成的文件

你也可以从 IDE 移除套件,或从磁盘彻底删除它们。

  1. 在主菜单中,转到 运行 | 管理覆盖率报告…Ctrl+Alt+F6)。

  2. 在打开的 选择要显示的覆盖率套件 对话框中,从工具栏选择操作:

    • 如需导入外部覆盖率文件,请点击 添加 ,然后浏览文件。

    • 如需仅从 IDE 移除覆盖率套件但保留磁盘上的文件,请选择该套件并点击 "移除"按钮移除

    • 如需同时从 IDE 和磁盘删除覆盖率套件,请选择该套件并点击 删除按钮删除

读取覆盖率数据

IntelliJ IDEA 显示的覆盖率结果在:

  • 覆盖率 工具窗口

  • 项目 工具窗口

  • 编辑器

代码覆盖率结果显示在 覆盖率 工具窗口、 项目 工具窗口中,以及在您 至少使用覆盖率运行一次运行配置后显示在编辑器中。

项目工具窗口

项目 工具窗口显示:

  • 目录中包含的类和行的百分比

  • 类覆盖方法和行的百分比

项目工具窗口中的代码覆盖率结果

覆盖率工具窗口

该报告按 类、方法、代码行和分支的覆盖率细分项目。

分支覆盖率显示在 if-elseswitch 语句中执行的分支的百分比。 JaCoCo 运行器和启用 Branch Coverage选项的 IntelliJ IDEA 运行器均可使用。

在 Coverage 工具窗口中的覆盖结果

覆盖率 工具窗口有以下选项:

条目

描述

"扁平化包"按钮

选择是否以层次结构显示包,或将结构扁平化以在同一层级显示所有包。

点击导航按钮

如果此选项开启,IntelliJ IDEA 会自动在编辑器中打开所选项目。 否则,您需要双击项目才能打开它们。

始终选择已打开元素按钮

如果启用此选项,IntelliJ IDEA 将自动在工具窗口中定位您在编辑器中打开的文件。

生成报告按钮

生成代码覆盖率报告并将其保存到指定目录。 有关更多信息,请参见 生成覆盖率报告

导入外部覆盖率报告按钮

从磁盘导入覆盖率套件。

筛选器

过滤覆盖结果。 您可以配置以下过滤器:

  • 仅显示已修改的类 – 仅显示与受保护的 VCS 分支相比在当前功能分支中已更改的类。

    选择此选项以专注于尚未在远程VCS分支中的更新。 如果存在至少一个受保护的远程VCS分支,则启用。

  • 仅显示有未提交更改的类 – 仅显示尚未提交到 VCS 的类。

  • 隐藏完全覆盖的类 – 仅显示测试未完全覆盖的类。

    当您希望排除通常已完全覆盖或其中没有可执行行的元素(如接口)时,请选择此选项。

编辑器

编辑器会显示各代码行的覆盖率状态 状态通过装订区域的彩色标记表示:

  • 绿色(绿色高亮显示,表示完全覆盖 ):该代码行已被执行

  • 黄色(黄色高亮显示,表示部分覆盖 ):该代码行被部分执行 当代码行包含条件逻辑(如 if/else 语句、循环或 switch 语句)时会出现这种情况,但只有部分分支被运行

  • 红色(红色高亮显示,表示未覆盖 ):该代码行未被执行

如需打开某行的覆盖率统计弹窗,请点击其在装订区域的覆盖率标记。 根据你使用的覆盖率运行器不同,弹窗会显示不同内容:

用于 switch 语句、由 IntelliJ IDEA 运行器运行的代码覆盖率弹窗

对于 IntelliJ IDEA 运行器,弹窗可以显示以下信息:

  • 命中次数 :代码行被执行的次数

  • 如果该行包含条件逻辑(如 if/else 语句、三元运算符或循环):

    • 真实命中 :条件为真的次数。

    • 伪命中 :条件为假的次数。

  • 如果代码行包含 switch 语句:

    • case <值> :某个具体 case 被执行的次数。

用于 switch 语句、由 IntelliJ IDEA 运行器运行的代码覆盖率弹窗

对于 JaCoCo 运行器,弹窗可以显示以下信息:

  • 完全覆盖 :代码行已被执行 如果包含条件逻辑,所有可能的分支都会被运行

  • 部分覆盖 :代码行已被执行,但只有部分条件逻辑分支被运行

  • 未涵盖 :该代码行完全未被执行

  • 已覆盖 <number>/<number> 分支 :条件逻辑中已运行分支数与分支总数的比值

此外,弹窗中还包含以下图标:

向上箭头

上一个 <覆盖状态>

跳转到上一个覆盖率标记并打开其统计信息。

向下箭头

下一个 <覆盖状态>

跳转到下一个覆盖率标记并打开其统计信息。

带有 JUnit 图标的文件夹图标

显示覆盖该行的测试

在单独的弹窗中显示覆盖当前代码行的测试

字节码图标

显示字节码

在单独的工具窗口中显示当前类的字节码。

设置图标

编辑覆盖颜色

打开 设置 | 编辑器 | 配色方案 | 常规自定义覆盖率标记的颜色

隐藏覆盖率

停止在 IntelliJ IDEA 中显示覆盖率结果。

隐藏覆盖率数据

请执行以下操作之一:

  • 覆盖率 工具窗口 (视图 | 工具窗口 | 覆盖率) 中关闭覆盖统计选项卡。

  • 点击页边的覆盖率高亮,然后选择 隐藏覆盖率

生成覆盖率报告

  1. 请前往 运行 | 生成覆盖率报告 ,或点击 生成覆盖率报告按钮 ,在 覆盖率 工具窗口中。

  2. 生成覆盖率报告 对话框中,指定用于存储生成报告的目录,并可选择 在浏览器中打开生成的 HTML 复选框。

配置代码覆盖率

在 IntelliJ IDEA 中,有适用于单个运行配置的覆盖设置,以及适用于每个项目的覆盖设置。

运行配置设置

对于每个 run configuration ,您可以指定覆盖分析的范围。

配置类和包

  1. 请前往 运行 | 编辑配置 ,然后点击左侧面板上的运行配置。

  2. 点击 修改选项 ,然后在 代码覆盖率 下选择以下选项:

    • 指定类和包 :选择此选项以配置您希望查看覆盖率信息的类和包。

    • 排除类和包 :选择此选项以配置您想要从覆盖率中排除的类和包。

项目设置

对于项目,您可以配置以下选项:

在将覆盖应用到编辑器前显示选项。},{

每次运行覆盖率分析时,询问是否让最近收集的 覆盖套件处于活动状态。 在这种情况下,将会出现一个对话框,您可以选择仅显示新结果、将其添加到现有结果中,或将其保存到存储中但不进行查看。

不应用已收集的覆盖

在运行覆盖率分析后,只有在最近收集的 覆盖套件保存到存储中。 在这种情况下,新的覆盖率数据将不会显示,除非您明确选择相应的套件 运行 | 管理覆盖率报告

将有效套件替换为新套件

隐藏当前显示的 覆盖率套件 ,并在运行覆盖率分析后使用新收集的覆盖率套件。 在这种情况下,只有最近一次覆盖率运行的结果会显示。

添加到有效套件

在运行覆盖率分析之后,将新收集的 覆盖套件添加到活动套件列表中。 这将保留现有的覆盖率结果,并在其基础上添加新的结果。

激活覆盖视图

每次运行覆盖分析时,请打开 覆盖工具窗口

选择覆盖率运行程序

选择覆盖率运行器: %instance%JaCoCo

分支覆盖率

始终启用 JaCoCo

ifswitch 语句的分支收集精细的覆盖数据。

按测试覆盖率跟踪

仅适用于 IntelliJ IDEA 运行器

让您追溯到执行某行代码的特定测试。 有关详细信息,请参阅 按测试覆盖率

在测试文件夹中收集覆盖率

仅适用于 IntelliJ IDEA 运行器

收集测试的代码覆盖率统计数据。 默认情况下,覆盖数据仅显示在源根目录中被覆盖的行。 使用此选项以在测试根目录中启用覆盖收集。

忽略隐式声明的默认构造函数

仅适用于 IntelliJ IDEA 运行器

从覆盖率统计中排除隐式默认构造函数。 显式声明的无参数构造函数将继续包含在内。

排除注释

仅适用于 IntelliJ IDEA 运行器

排除由指定注解标记的元素从覆盖率结果中,例如 Lombok 的 @Generated 元素。

更改覆盖率高亮的颜色

  1. Ctrl+Alt+S 打开设置,然后选择 编辑器 | 颜色方案 | 常规

  2. 在组件列表中,展开 行覆盖率 节点并选择一种覆盖类型:例如, 完全部分覆盖未涵盖

  3. 点击 前景 字段以打开 选择颜色 对话框。

  4. 选择颜色,应用更改,然后关闭对话框。

配置代码覆盖率颜色

按测试覆盖率

启用分支覆盖率时,IntelliJ IDEA 允许您跟踪每个测试覆盖了哪些代码行,反之亦然。

启用按测试覆盖率

设置 Ctrl+Alt+S | 构建、执行、部署 | 覆盖率 中,启用 分支覆盖率按测试覆盖率跟踪

    按行跟踪测试

    要导航到覆盖特定行的测试:

    • 点击编辑器边距中的覆盖率高亮显示,然后选择 "显示覆盖该行的测试"显示覆盖该行的测试

      在点击覆盖率高亮显示时出现的弹出窗口中显示"Tests Covering Line"按钮

    按测试跟踪行

    仅高亮显示特定测试覆盖的行:

    • 封面 工具窗口中,选择一个测试并点击工具栏上的 显示每个测试的覆盖率

      在工具栏上显示"Coverage per Test"按钮
    2026年 7月 14日