테스트 코드 커버리지 툴 결정

1. 테스트 커버리지 툴을 찾게 된 동기

결론부터 말하면 테스트 커버리지를 웹에 기록하고 공유하기 위해서 커버리지 툴을 찾게 되었다. 인텔리제이는 기본적으로 코드 커버리지 툴을 제공한다.

png
png

그래서 추가적으로 테스트 코드 커버리지 툴을 추가할 필요가 없었다. 그러나 기본 설정으로 해결할 수 있는 건 로컬 환경 뿐이었다.

png

깃허브 이슈에 테스트 커버리지를 기록하면서 관리하고 싶은데...이걸 어떻게 공유하지? 매 번 이슈 코멘트에 직접 수치를 입력하며 테이블을 생성하는 건 번거로운 일이었다. 그래서 외부 라이브러리를 추가하기로 했다.

2. 테스트 커버리지 툴 결정 기준

깃허브 이슈에 코멘트로 달 예정이므로 아래와 같은 기준을 두고 결정했다.

  1. 무료

  2. 프로젝트 및 IDE 호환성

  3. 깃허브 지원

  4. 시장에서 검증된 서비스

3. 테스트 코드 커버리지 툴 선택

테스트 코드 커버리지 툴 목록은 다음과 같다.

  • jacoco

  • cobertura

  • emma

신뢰성 있는 점유율 통계는 찾지 못했다. 그래서 세 개의 링크( link1, link2, link3 )에서 공통적으로 추천하는 툴을 뽑아내서 검증하기로 했다.

무료인가?

  • jacoco: EclEmma 팀에서 개발했으며 무료

  • cobertura: jcoverage에 기반을 두고 있으며 무료

  • emma: 무료

프로젝트 및 IDE 호환성은?

  • jacoco: 마지막 빌드가 23년 10월, 다양한 IDE 지원

  • cobertura: 마지막 수정 일자가 22년, gradle, maven 지원

  • emma: 공식 사이트 최종 수정 일자가 2006년

호환성 및 확장성 측면에서는 jacoco가 가장 합리적이다.

png

jacoco는 공식 문서에서 IDE와의 연동 가이드를 제공한다. 반면에 emma는 내 프로젝트의 자바 버전인 17을 활용하지 못할 가능성이 높다. cobentrua도 수정이 없다면, 자바 버전을 업그레이드 할 경우 활용하지 못할 수 있다.

깃허브를 지원하는가?

  • jacoco: jacoco-report로 지원

  • cobertura: covertura-report로 지원

  • emma: 서드 파티 라이브러리 없음

시장에서 검증된 서비스인가?

  • jacoco: github 저장소 기준 353,240명이 사용 중, 3900개의 star

  • cobertura: 사용자 통계는 알 수 없고 1000개의 star

  • emma: 알 수 없음

시장 점유율을 알 수 없어서 깃허브로 비교해보니 jacoco가 가장 인기있는 툴이었다.

종합 평가

서비스
특징
무료
호환성
깃허브 지원
시장 검증

jacoco

- 2009년 0.1.0 버전 배포 - 무료 - 다양한 IDE 지원 - jacoco-report 플러그인 지원 - 35만명 사용, 4천개의 star

cobertura

- 2020년 서비스 시작 - 무료 - gradle, maven 등 제공 - cobertura-report 플러그인 지원 - 1000개의 star

Emma

- 2001년 시작 - 무료 - 확인 불가 - 확인 불가 - 확인 불가

내가 제시한 지표에서 가장 높은 점수를 받은 jacoco를 선택했다. 다른 툴을 결정할 때와 달리 선택지가 다양하지 않았다는 게 아쉬웠다. 테스트 커버리지 툴은 경쟁이 치열한 시장이 아니어서 그런가 보다. 보통 CI/CD 툴과 연동해서 사용하는 일이 많은 것으로 보인다.

참고 자료

Last updated