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