라인과 지점 커버리지의 차이점
내 프로젝트 중 하나에 Cobertura Maven 플러그인을 사용합니다. 하지만 생성 된 보고서에 대한 질문이 있습니다.
라인과 지점 커버리지의 차이점은 무엇입니까?
줄 범위는 얼마나 많은 문을 사용했는지 측정합니다 (문은 일반적으로 주석, 조건문 등을 포함하지 않는 코드 줄임). 지점 적용 범위는 각 조건부 (if, while, for)에 대해 참 및 거짓 분기를 선택했는지 확인합니다. 조건문보다 두 배 많은 분기를 갖게됩니다.
왜 신경 쓰나요? 예를 고려하십시오.
public int getNameLength(boolean isCoolUser) {
User user = null;
if (isCoolUser) {
user = new John();
}
return user.getName().length();
}
이 메서드를로 isCoolUser
설정하여 호출 true
하면 100 % 명세서 적용 범위를 얻습니다. 좋은가요? NOPE,을 호출하면 널 포인터가 될 것입니다 false
. 그러나 첫 번째 경우에는 분기 범위가 50 %이므로 테스트에서 누락 된 부분이 있음을 확인할 수 있습니다 (그리고 종종 코드에서).
이 코드를 간단한 예로 보겠습니다.
if(cond) {
line1();
line2();
line3();
line4();
} else {
line5();
}
테스트 cond
가 사실임을 증명하고 else
가지를 실행하지 않는 경우 :
- 5 개 라인 중 4 개 포함
- 2 개 지점 중 1 개가 포함됨
또한 Cobertura 보고서 자체는 열 머리글을 클릭 할 때 몇 가지 멋진 팝업 도움말 도구 설명을 소개합니다.
라인 적용 범위 -이 테스트 실행에 의해 실행 된 라인의 백분율입니다.
분기 범위 -이 테스트 실행에 의해 실행 된 분기의 비율입니다.
if(cond){
//branch 1
}else{
//branch 2
}
LineCoverage 및 BranchCoverage 모두에 대해 100 % 커버리지를 얻으려면 모든 라인이 분기 1 및 분기 2임을 지정해야합니다.
다른 것에서 아무것도 놓치면 지점 커버리지의 절반을 받게됩니다. if 및 else 모두에서 라인 수에서 누락 된 사항이있는 경우 BranchCoverage는 100 %이지만 라인 적용 범위에서는 100 %가 아닙니다.
도움이 되었기를 바랍니다.
참고 URL : https://stackoverflow.com/questions/8229236/differences-between-line-and-branch-coverage
'IT story' 카테고리의 다른 글
CSS 만 사용하여 텍스트를 숨기고 표시 할 수 있습니까 (JavaScript 코드 없음)? (0) | 2020.09.15 |
---|---|
Log4j XML 구성 파일을 사용하여 Hibernate 로깅을 구성합니까? (0) | 2020.09.15 |
Rails의 하위 도메인간에 세션 (쿠키)을 공유 하시겠습니까? (0) | 2020.09.15 |
Kubernetes 복제 컨트롤러의 모든 포드에서 로그를 가져 오려면 어떻게해야합니까? (0) | 2020.09.15 |
사용 가능한 메모리가 아직 충분할 때 'System.OutOfMemoryException'이 발생했습니다. (0) | 2020.09.15 |