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

标签 java unit-testing testing jacoco test-coverage

在一个带有 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 循环只是带有迭代器的 for 循环的语法糖和对 iter.hasNext(); 的测试。在您的测试用例中,您只会看到返回 true 的情况。

关于java - 为什么 Jacoco 将我的 for 循环标记为部分覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57999251/

相关文章:

java - 在常数时间内添加到单链表的末尾

python - 如何测试 Python 数独类

testing - 如何在 JMeter 的单个线程中调用的循环 Controller 之间添加计时器

java - 当我单击按钮时,我的 PopUpWindow 未打开

java - 将 InputStreamReader 转换为 (char)

java - 更改Eclipse Gradle设置

java - 一个单元如何测试非确定性加密函数?

javascript - Angular 6 - 单元测试构造函数中的订阅函数

testing - pdf表单的自动化测试

javascript - 如何测试 Postman 中是否缺少(可能)嵌套的 JSON 属性?