【发布时间】:2019-09-18 18:59:41
【问题描述】:
在一个带有 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 循环的语法糖。在您的测试用例中,您只会看到返回true的情况。 -
就是这样!我从未测试过循环完成的条件。谢谢你。如果您发布答案,我会接受。
标签: java unit-testing testing jacoco test-coverage