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?
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:
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" isCoolUser
olarak 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.
Bu kodu basitleştirilmiş bir örnek olarak alın:
if(cond) {
line1();
line2();
line3();
line4();
} else {
line5();
}
Testiniz yalnızca cond
doğru olma durumunu uygularsa ve else
sahip olduğunuz dalı asla çalıştırmazsa :
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.
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.