7
我刚开始使用Java 8.我看到很多流和选项。我的脑海里浮现出一个问题。考虑从this oracle tutorial采取了以下例子:Java 8中的覆盖率报告
String name = computer.flatMap(Computer::getSoundcard)
.flatMap(Soundcard::getUSB)
.map(USB::getVersion)
.orElse("UNKNOWN");
或下一个从here采取:
List<String> myList = new ArrayList();
myList
.stream()
.filter(s -> s.startsWith("c"))
.map(String::toUpperCase)
.sorted()
.forEach(System.out::println);
有没有覆盖解决方案,它可以告诉我,如果在第一个片段的orElse
使用?或者其他的,它告诉我,关闭没有被调用,因为列表是空的?是否有任何报告,forEach
中的方法参考未使用?
为您的测试数据使用未添加可选的,没有任何价值,并检查未知的出现。 – JEY
'orElse'调用总是会发生,并且在调用发生之前它的参数总是被评估,所以它的覆盖不需要评估。在lambda表达式的情况下,它们在编译期间被解析为合成方法,所以每个最新的代码覆盖率也应该能够处理它们。 – Holger
当您在您的流上使用“终端”操作时,您可以保证“流水线”中的任何操作都会被点击。所以并不需要覆盖。 – fge