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

Java 为什么Jacoco将我的for循环标记为部分覆盖?,java,unit-testing,testing,jacoco,test-coverage,Java,Unit Testing,Testing,Jacoco,Test Coverage,在带有for循环和if语句的简单方法中,Jacoco将for循环标记为部分覆盖。为什么会这样 这个问题似乎相关,但我不知道如何将其应用于我的情况: 我怀疑这与单独的“如果”声明有关 MRE: 示例代码将显示部分覆盖了带有“for”循环的行,并且每隔一行覆盖一次。我希望它能显示每一行内容。可能是因为您没有测试未找到值且for循环完成的场景。foreach循环只是带有迭代器的for循环和对iter.hasNext()的测试的语法糖。在您的测试用例中,您只会看到返回true的情况,这可能是因为您没有测

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

这个问题似乎相关,但我不知道如何将其应用于我的情况:

我怀疑这与单独的“如果”声明有关

MRE:


示例代码将显示部分覆盖了带有“for”循环的行,并且每隔一行覆盖一次。我希望它能显示每一行内容。

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

的情况,这可能是因为您没有测试未找到值且for循环完成的场景。foreach循环只是带有迭代器的for循环和对
iter.hasNext()的测试的语法糖。在您的测试用例中,您只看到返回
true
的情况。正是这样!我从未测试过循环完成的条件。非常感谢。如果你给我一个答复,我会接受的。
   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();
    }