以下,Jacoco说所有4个分支都被覆盖。
list.stream()
.forEach(item -> item.type.equals("Good") && item.expired == false);
但是对于此代码段,运行相同的测试集,Jacoco说缺少1个分支。
list.stream()
.filter(item -> item.type.equals("Good") && item.expired == false)
.findFirst()
.get()
怎么会这样?
这是因为此代码段中的forEach
被每个元素调用(尽管它不执行任何操作-它产生一个boolean
并忘记了它:]]
list.stream()
.forEach(item -> item.type.equals("Good") && item.expired == false);
而在以下代码段中,您正在通过谓词过滤元素:
list.stream()
.filter(item -> item.type.equals("Good") && item.expired == false)
.findFirst()
.get()
您需要检查,不满足谓词的元素会被过滤掉,反之亦然。这样,您可以检查2个分支。