2011-05-14 11 views
2

저는 처음으로 cobertura를 사용하고 있습니다. 모든 것이 잘 작동하지만 내가 궁금해하는 것은 처럼 호출 할 수 안 내 코드에 라인이있다,있다 : 내 코드가 잘 작동 할 때Cobertura, 회피 라인이 없어야합니다.

try { 
    em.persist(); 
}catch(Exception) { 
    logger.error("can not create"); 
} 

라인을 계속 때까지 모든 컨트롤을하고있는 중이 야가, 오류 라인이 결코 도달했고 지금은 그렇다. 그렇기 때문에 % 100의 회선 범위를 가질 수 없습니다.

어떻게 든 그것을 억제해야합니까?

감사합니다. Bilal

답변

5

Cobertura 범위 보고서에서 전체 클래스를 제외 할 수 있지만 특정 선이나 방법을 제외 할 수는 없습니다.

복잡한 프로젝트 조합을 시뮬레이션하여 도달 할 수없는 코드 또는 코드가 항상있을 수 있으므로 실제 프로젝트에서는 100 % 적용 범위를 달성 할 수 없음을 인정해야합니다.

다른 대답이 제안하는대로 에 예외를 던지기 위해 EntityManager을 조롱하거나 스터브하여 단위 테스트 적용 범위를 늘리거나 시도 할 수 있습니다. 그러나 이것은 당신이 갈 수있는 한 꽤 많이 있습니다.

+0

답변 해 주셔서 감사합니다. – bilal

0

예외 발생 사례를 다루는 단위 테스트를 작성하십시오.

+0

내 DAO의 모든 제어 작업을 수행하기 때문에 불가능합니다. 코드가이 코드까지 도달하면 잘 작동합니다. – bilal

0

"persist"메소드에서 발생하는 예외는 발생하지 않는다고 말할 수 없습니다. db 연결 매개 변수가 잘못되었거나 매핑 주석으로 망가져 열 이름이 엉망인 경우 어떻게됩니까? 그것은 모두 예외를 유발할 것입니다. 이것을 잡아서 삼키는 것은 예외적으로 실패 할 때 단위 테스트가 성공할 수 있습니다.