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