Hat ve Şube kapsamı arasındaki farklar


94

Projemden biri için Cobertura Maven eklentisini kullanıyorum. Ancak oluşturulan raporla ilgili bir sorum var:

Hat ve şube kapsamı arasındaki fark nedir?

Yanıtlar:


171

Satır kapsamı, kaç ifade aldığınızı ölçer (bir ifade genellikle yorumlar, koşullu ifadeler vb. Dahil olmayan bir kod satırıdır). Şube teminatları, her koşullu için doğru ve yanlış şubeyi alıp almadığınızı kontrol eder (if, while, for). Koşullu ifadelerin iki katı kadar dalınız olacak.

Neden umurunda? Örneği düşünün:

public int getNameLength(boolean isCoolUser) {
    User user = null;
    if (isCoolUser) {
        user = new John(); 
    }
    return user.getName().length(); 
}

Bu yöntemi "olarak" isCoolUserolarak adlandırırsanız true,% 100 açıklama kapsamı elde edersiniz. Kulağa iyi geliyor? HAYIR, ile ararsanız boş bir işaretçi olacak false. Bununla birlikte, ilk durumda% 50 şube kapsamına sahipsiniz, bu nedenle testinizde (ve genellikle kodunuzda) eksik bir şey olduğunu görebilirsiniz.


8
Mükemmel cevap! Satır kapsamının yanlış bir koda sahip olma hissi verdiğini gösterir!
MAGx2

Hat kapsamı veya şube kapsamı nedeniyle elde edebileceğiniz olası hatalar nelerdir?
Emna Ayadi

61

Bu kodu basitleştirilmiş bir örnek olarak alın:

if(cond) {
    line1();
    line2();
    line3();
    line4();
} else {
    line5();
}

Testiniz yalnızca conddoğru olma durumunu uygularsa ve elsesahip olduğunuz dalı asla çalıştırmazsa :

  • Kapsanan 5 hattan 4'ü
  • 2 şubeden 1'i kapandı

Ayrıca Cobertura raporu , sütun başlığına tıklandığında bazı hoş açılır pencere yardım ipuçları sunar:

Hat Kapsamı - Bu test çalıştırması tarafından yürütülen satırların yüzdesi.

Şube Kapsamı - Bu test çalıştırması tarafından yürütülen dalların yüzdesi.


Bu cevabı yazmayı umuyordum, ama sen (yıllarca) beni önledin. Temiz Cevap. Teşekkürler.
Soundararajan

3
if(cond){
    //branch 1
}else{  
    //branch 2
}

Hem LineCoverage hem de BranchCoverage için% 100 kapsama alanı elde etmek için tüm satırları şube 1 ve şube 2 olarak adreslemeniz gerekir.

Herhangi bir şeyi kaçırırsanız, şube kapsamının yarısını alırsınız. # Satırda hem eğer hem de başka bir şeyi kaçırdıysanız, hat kapsamı ile% 100 BranchCoverage alırsınız ancak% 100 almazsınız.

Bu yardımcı olur umarım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.