首页 > 解决方案 > 什么定义了 Intellij 代码覆盖测试中的“部分”覆盖?

问题描述

我正在使用“跟踪”(使用默认的 Intellij 覆盖工具)在 IntelliJ IDEA 中运行具有代码覆盖率的 Java 单元测试。即使使用了两个分支,我也有一个 if 语句总是报告“部分覆盖”:

截屏

其他 if 语句是绿色的,其中两条路径都经过测试,我尝试使用方法调用的结果提取变量。谁能解释为什么这条线被报告为部分而不是完整的?

标签: javaunit-testingintellij-ideacode-coverage

解决方案


如果您有复合条件并且并非所有条款都已执行,则会发生部分承保。例如

if (isEmptyString(location) && isEmptyString(name)) {
    return false;
}

如果在所有测试用例中isEmptyString(location)返回,则永远不会执行。因此“部分覆盖”。falseisEmptyString(name)

您的代码中不是这种情况,因此我认为这是覆盖工具中的错误。


推荐阅读