Java流缺少分支覆盖范围

问题描述 投票:1回答:1

以下,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()

怎么会这样?

java jacoco
1个回答
0
投票

这是因为此代码段中的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个分支。

© www.soinside.com 2019 - 2024. All rights reserved.