为什么 Jacoco 将我的 for 循环标记为部分覆盖?

Why is Jacoco flagging my for loop as partially covered?

在一个带有 for 循环和 if 语句的简单方法中,Jacoco 将 for 循环标记为部分覆盖。为什么是这样?

这个问题似乎相关,但我不知道如何将它应用到我的情况:https://github.com/jacoco/jacoco/issues/370

我怀疑这与单独的 "if" 声明有关。

MRE:

   public SomeClass test(){
        SomeClass find = new SomeClass();

        ArrayList <String> myArrayList = new ArrayList<>();
        myArrayList.add("A");
        myArrayList.add("B");

        for(String s : myArrayList){
            if(s.equals("B")){break;}
        }

        return find;
    }

一个对应的测试:

@Test
    public void testTest(){
        SomeClass find = new SomeClass();
        find.test();
    }

示例代码会显示带有 "for" 循环的行被部分覆盖,并且每隔一行被覆盖。我希望它能显示每一行。

可能是因为您没有测试找不到值并且 for 循环完成的场景。 foreach 循环只是带有迭代器和 iter.hasNext(); 测试的 for 循环的语法糖。在您的测试用例中,您只会看到 returns true.

的情况