【问题标题】:What defines 'partial' coverage in Intellij code coverage tests?什么定义了 Intellij 代码覆盖测试中的“部分”覆盖?
【发布时间】:2021-03-21 06:49:30
【问题描述】:

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

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

【问题讨论】:

    标签: java unit-testing intellij-idea code-coverage


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 是的,我就是这么想的。我怀疑它可能是内联静态方法(不太可能,但理论上可能),这意味着这一行会比看起来更复杂,但似乎并非如此。目前它看起来像一个错误。
    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    • 2011-03-12
    相关资源
    最近更新 更多