Java 什么定义了';部分';Intellij代码覆盖率测试中的覆盖率?

Java 什么定义了';部分';Intellij代码覆盖率测试中的覆盖率?,java,unit-testing,intellij-idea,code-coverage,Java,Unit Testing,Intellij Idea,Code Coverage,我在IntelliJ IDEA中运行Java单元测试,代码覆盖率为“跟踪”(使用默认的IntelliJ覆盖率工具))。我有一个if语句,它总是报告“部分覆盖”,即使使用了两个分支: 其他if语句是绿色的,其中两条路径都被测试,我已经尝试用方法调用的结果提取一个变量。有人能解释为什么这一行被报告为部分而不是全部吗?如果你有复合条件,并且不是所有的条款都被执行,那么会发生部分覆盖。e、 g if(isEmptyString(位置)和&isEmptyString(名称)){ 返回false; }

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


其他if语句是绿色的,其中两条路径都被测试,我已经尝试用方法调用的结果提取一个变量。有人能解释为什么这一行被报告为部分而不是全部吗?

如果你有复合条件,并且不是所有的条款都被执行,那么会发生部分覆盖。e、 g

if(isEmptyString(位置)和&isEmptyString(名称)){
返回false;
}
如果
isEmptyString(location)
在所有测试用例中返回
false
isEmptyString(name)
永远不会执行。因此,“部分覆盖”


您的代码不是这样,因此我认为这是coverage tool中的一个bug。

是的,我就是这么想的。我怀疑它可能内联了静态方法(不太可能,但理论上可能),这意味着这一行将比它看起来更复杂,但事实似乎并非如此。目前它看起来像一只虫子。