2011-11-22 35 views

Trả lời

105

Phạm vi phủ sóng đo lường số lượng câu lệnh bạn đã thực hiện (tuyên bố thường là dòng mã, không bao gồm nhận xét, điều kiện, v.v.). Chi nhánh bao gồm kiểm tra nếu bạn đã thực sự chi nhánh và sai cho mỗi điều kiện (nếu, trong khi, cho). Bạn sẽ có gấp đôi chi nhánh như điều kiện.

Tại sao bạn quan tâm? Hãy xem xét ví dụ:

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

Nếu bạn gọi phương pháp này với isCoolUser thiết lập để true, bạn nhận được 100% bảo hiểm tuyên bố. Nghe hay sao? NOPE, sẽ có một con trỏ null nếu bạn gọi với false. Tuy nhiên, bạn có 50% phạm vi chi nhánh trong trường hợp đầu tiên, vì vậy bạn có thể thấy có điều gì đó thiếu trong thử nghiệm của bạn (và thường, trong mã của bạn).

+4

Câu trả lời hay! Nó cho thấy khi phạm vi bảo hiểm dòng cho cảm giác sai lầm của việc có mã tốt! – MAGx2

45

Hãy mã này là một ví dụ đơn giản:

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

Nếu thử nghiệm của bạn chỉ tập các cond là đúng sự thật và không bao giờ chạy chi nhánh else bạn có:

  • 4 trong 5 dòng phủ
  • 1 trong số 2 chi nhánh được bao gồm

Cũng Cobertura report tự giới thiệu một số tooltips giúp đỡ pop-up đẹp khi tiêu đề cột được nhấp:

Dòng Bảo hiểm - Tỷ lệ thực hiện bởi dòng chạy thử nghiệm này.

Chi tiết mức độ phù hợp - Phần trăm chi nhánh được thực hiện bởi lần chạy thử này.

+1

Đây cũng là một câu trả lời tuyệt vời! Đơn giản và rõ ràng! – Bowen

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

Bạn cần phải giải quyết tất cả các dòng là chi nhánh 1 và nhánh 2 để có được bảo hiểm 100% cho cả LineCoverage và BranchCoverage.

Nếu bạn bỏ lỡ bất kỳ thứ gì khác, bạn sẽ nhận được một nửa phạm vi chi nhánh. Nếu bạn đã bỏ lỡ bất cứ điều gì trong # dòng trong cả hai nếu và khác, bạn sẽ nhận được BranchCoverage của 100% nhưng không phải 100% với phạm vi bảo hiểm dòng.

Hy vọng điều này sẽ hữu ích.

Các vấn đề liên quan