Tôi sử dụng plugin Cobertura Maven cho một trong những dự án của mình. Nhưng tôi có một câu hỏi về báo cáo đã tạo:
Sự khác biệt giữa phạm vi phủ sóng đường dây và chi nhánh là gì?
Tôi sử dụng plugin Cobertura Maven cho một trong những dự án của mình. Nhưng tôi có một câu hỏi về báo cáo đã tạo:
Sự khác biệt giữa phạm vi phủ sóng đường dây và chi nhánh là gì?
Câu trả lời:
Mức độ phù hợp của dòng đo lường số lượng câu lệnh bạn đã thực hiện (một câu lệnh thường là một dòng mã, không bao gồm nhận xét, điều kiện, v.v.). Chi nhánh tính toán trung bình kiểm tra xem bạn đã lấy chi nhánh đúng và sai cho mỗi điều kiện (nếu, trong khi, cho). Bạn sẽ có gấp đôi số nhánh so với điều kiện.
Bạn quan tâm làm gì? 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 thức này với isCoolUser
set to true
, bạn sẽ nhận được 100% phạm vi sao kê. Nghe hay không? NOPE, sẽ có một con trỏ null nếu bạn gọi bằng 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ì đó bị thiếu trong thử nghiệm của mình (và thường là trong mã của bạn).
Lấy mã này làm ví dụ đơn giản:
if(cond) {
line1();
line2();
line3();
line4();
} else {
line5();
}
Nếu bài kiểm tra của bạn chỉ thực hiện cond
đúng và không bao giờ chạy else
nhánh bạn có:
Ngoài ra, bản thân báo cáo Cobertura cũng giới thiệu một số chú giải công cụ trợ giúp cửa sổ bật lên hay khi tiêu đề cột được nhấp vào:
Mức độ phủ sóng - Phần trăm số dòng được thực hiện bởi lần chạy thử nghiệm này.
Phạm vi chi nhánh - Phần trăm các chi nhánh được thực hiện bởi lần chạy thử nghiệm này.
if(cond){
//branch 1
}else{
//branch 2
}
Bạn cần giải quyết tất cả các đường là nhánh 1 và nhánh 2 để có được mức độ phủ sóng 100% cho cả LineCoverage và BranchCoverage.
Nếu bạn bỏ lỡ bất cứ điều gì khác, bạn sẽ nhận được một nửa bảo hiểm chi nhánh. Nếu bạn đã bỏ lỡ bất cứ điều gì trong # dòng trong cả if và else, bạn sẽ nhận được BranchCoverage là 100% nhưng không phải 100% với phạm vi phủ sóng của line.
Hi vọng điêu nay co ich.