Cobertura 사용기

사용자 삽입 이미지
아~~ 이 짜릿함!!!
저 화면을 보려고 거의 두 시간이나 낑낑댔습니다.

TDD 연습한 코드를 Cobertura가 제공하는 Ant Task를 사용해서 리포트를 작성한 화면입니다. 딱 봐도 Rent 클래스에 대한 테스트가 부족했다는 것을 알 수 있습니다.

이상하다. 정말 열심히 TDD로 작성한 코드인데, Rent 클래스의 커버리지는 정말 이상하리 만큼 낮습니다. 그래서 살펴봤습니다.

사용자 삽입 이미지
이야… 테스트 안 된 부분은 뻘건색으로 표시 됩니다. 죽여줍니다. ㅎㅎ 무서워서라도 테스트 코드를 잘 작성해야겠군요.

toString() 메소드가 말썽이었군요. 그 위에있는 메소드도 RentalInfo에 있는 getRentalFee()는 테스트는 했는데 그것들을 쭉 돌아가며 호출하는 메소드는 그냥 작성한 것 같네요.

흠… 그리고 클래스 목록에 Test 클래스까지 포함되어 있는데, 저 녀석은 instrument 대상에서 제외시켜줘야겠습니다.

사용자 삽입 이미지
각 항목 별로 정렬도 됩니다. 가장 커버리지가 낮은 클래스는 나중에 버그가 숨어있기 가장 안전한 곳일테니, 테스트를 보충해주는게 좋을 것입니다.

각 항목 이름을 클릭하면 다음과 같은 항목에 대한 도움말을 보실 수 있습니다.

사용자 삽입 이미지
Branch Coverage는 뭔지 모르겠네요. 읽어봐도.. 별로;;

위키피디아에서는 다음과 같이 설명되어 있습니다.

Branch coverage (sometimes called Decision Coverage) measures which possible branches in flow control structures are followed. Clover does this by recording if the boolean expression in the control structure evaluated to both true and false during execution.

가능한 분기를 얼마나 테스트 했는지 나타내는 수치로군요. 제가 작성한 코드에서 예를 들어보겠습니다.

사용자 삽입 이미지
분기문이 하나이고 해당 분기문을 한 번만 테스트 했네요.(왼쪽에 있는 숫자가 몇 번 테스트 됐는지 표시 해주는 것 같습니다. 추측인데.. 거의 맞는거 같습니다.) if 문은 두 곳으로 분기할 수 있는데 그 중에서 한 번만 테스트 한 것입니다.

맞습니다. “삼각측량”을 사용하지 않았습니다.
역시 TDD는 쉽지 않습니다.
그러나 그만큼 재밌습니다.