मैं अपने एक प्रोजेक्ट के लिए कोबेटुरा मावेन प्लगइन का उपयोग करता हूं। लेकिन मेरे पास उत्पन्न रिपोर्ट के बारे में एक प्रश्न है:
लाइन और ब्रांच कवरेज में क्या अंतर है?
मैं अपने एक प्रोजेक्ट के लिए कोबेटुरा मावेन प्लगइन का उपयोग करता हूं। लेकिन मेरे पास उत्पन्न रिपोर्ट के बारे में एक प्रश्न है:
लाइन और ब्रांच कवरेज में क्या अंतर है?
जवाबों:
लाइन कवरेज यह मापता है कि आपने कितने स्टेटमेंट लिए हैं (एक स्टेटमेंट आमतौर पर कोड की एक पंक्ति होती है, जिसमें टिप्पणियां, सशर्त आदि शामिल नहीं हैं)। यदि आप प्रत्येक सशर्त (यदि, जबकि,) के लिए सच्ची और झूठी शाखा लेते हैं, तो शाखा कवरेज जाँच करती है। आपके पास सशर्त रूप से कई शाखाएँ होंगी।
तुम क्यो फिकर करते हो? उदाहरण पर विचार करें:
public int getNameLength(boolean isCoolUser) {
User user = null;
if (isCoolUser) {
user = new John();
}
return user.getName().length();
}
यदि आप इस विधि को isCoolUser
सेट के साथ कहते हैं true
, तो आपको 100% स्टेटमेंट कवरेज मिलता है। बढ़िया है? यदि आप साथ फोन करते हैं तो NOPE, एक अशक्त सूचक होने वाला है false
। हालांकि, आपके पास पहले मामले में 50% शाखा कवरेज है, इसलिए आप देख सकते हैं कि आपके परीक्षण में कुछ गायब है (और अक्सर, आपके कोड में)।
इस कोड को एक सरलीकृत उदाहरण के रूप में लें:
if(cond) {
line1();
line2();
line3();
line4();
} else {
line5();
}
यदि आपका परीक्षण केवल cond
सही होने का अभ्यास करता है और else
आपके पास कभी भी शाखा नहीं चलती है:
जब कॉलम हैडर पर क्लिक किया जाता है, तब भी कोबर्टुरा रिपोर्ट स्वयं कुछ अच्छे पॉप-अप हेल्प टूलटिप्स पेश करती है:
लाइन कवरेज - इस परीक्षण द्वारा निष्पादित लाइनों का प्रतिशत।
ब्रांच कवरेज - इस परीक्षण द्वारा निष्पादित शाखाओं का प्रतिशत।
if(cond){
//branch 1
}else{
//branch 2
}
आपको LineCoverage और BranchCoverage दोनों के लिए 100% कवरेज प्राप्त करने के लिए सभी लाइनों को शाखा 1 और शाखा 2 को संबोधित करने की आवश्यकता है।
यदि आप किसी और चीज में चूक करते हैं, तो आपको शाखा कवरेज का आधा हिस्सा मिलेगा। अगर आपने अगर और नहीं दोनों में # लाइनों में कुछ भी याद किया है, तो आपको 100% का ब्रांच क्रेडिट मिलेगा, लेकिन लाइन कवरेज के साथ 100% नहीं।
उम्मीद है की यह मदद करेगा।