2016-02-24 27 views
7

मैंने अभी जावा 8 के साथ काम करना शुरू कर दिया है। मुझे बहुत सारी स्ट्रीम और विकल्प मिलते हैं। एक सवाल मेरे दिमाग में popped।जावा में कवरेज रिपोर्ट 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 इस्तेमाल किया गया था निम्न उदाहरण this oracle tutorial से लिया पर विचार करें? या कुछ अन्य, जो मुझे बताता है कि filter बंद नहीं किया गया था, क्योंकि सूची खाली थी? क्या कोई रिपोर्ट हो सकती है कि forEach में विधि संदर्भ का उपयोग नहीं किया गया था?

+0

अपने परीक्षण के लिए डेटा के उपयोग के किसी भी मूल्य के बिना संयुक्त राष्ट्र वैकल्पिक जोड़ सकते हैं और है कि अज्ञात दिखाई जाँच करें। – JEY

+1

'orElse' आमंत्रण हमेशा होता है और आमंत्रण होने से पहले इसका तर्क हमेशा मूल्यांकन किया जाता है, इसलिए इसके कवरेज को कोई मूल्यांकन की आवश्यकता नहीं होती है। लैम्ब्डा अभिव्यक्तियों के मामले में, वे संकलन के दौरान सिंथेटिक तरीकों से वंचित हैं ताकि प्रत्येक अद्यतित कोड कवरेज भी उनसे निपटने में सक्षम हो। – Holger

+3

आपको गारंटी है कि जब आप अपनी स्ट्रीम पर "टर्मिनल" ऑपरेशन का उपयोग करते हैं तो "पाइपलाइन" में कोई भी ऑपरेशन मारा जाएगा। तो वास्तव में कवरेज की जरूरत नहीं है। – fge

उत्तर

1

कम से कम क्लॉवर बंद होने के लिए कवरेज का समर्थन करता प्रतीत होता है। this ब्लॉग प्रविष्टि देखें! Intellij में

उदाहरण:

enter image description here

संबंधित मुद्दे