우테코 프리코스를 진행하면서 요구사항에 의해 테스트 코드를 작성하였다.
실수를 방지하기 위해 정말 꼼꼼하게 테스트 코드를 작성하며, 엣지 케이스를 찾기 위해 열심히 노력하였다.
하지만 미션 코드가 길어지다보니 "모든 로직에 대한 테스트가 되어있는가?"
라는 스스로에 대한 의구심이 들기 시작했다.
때문에 이 의구심을 해결하기 위한 방법을 찾아보았고, 인텔리제이에서 플러그인 설치없이 코드 커버리지
를 측정을 할 수 있다는 것을 알 수 있었다.
나는 이를 활용해 최대한 모든 로직을 테스트 할 수 있었고, 몇 번의 클릭만으로 많은 장점을 얻을 수 있다고 생각했기 때문에 이를 공유하고자 간단히나마 글을 작성해보고자 한다.
코드 커버리지는 내 프로젝트의 코드들의 테스트 코드에서 사용된 정도를 백분율(%)
로 나타낸 것이다.
이를 확인함으로써 내가 테스트 코드를 작성하지 못한 부분이 존재하는지를 확인하며, 꼼꼼히 테스트를 작성할 수 있다.
이에 대해 자세히 학습하고자 한다면 아래 블로그를 참고하면 좋을 것 같아 함께 첨부한다.
IntelliJ 코드 커버리지 확인하기
코드 커버리지란?
💡 먼저 이 글은
IntelliJ Ultimate
기준으로 작성되었음을 밝힌다.
Test 패키지를 오른쪽 마우스로 클릭하고, More Run/Debug
를 선택한 다음
Run 'Tests in '...' with Coverage
를 클릭한다.
그럼 인텔리제이는 코드를 분석하여 백분율로 코드의 Coverage
를 출력해준다.
인텔리제이는 브랜치 커버리지(Branch Coverage)
측정 방식을 지원하여,
위보다 더욱 정확하고 세밀하게 Coverage
를 측정할 수 있도록 돕는다.
💡 브랜치 커버리지(Branch Coverage)란?
브랜치 커버리지는조건문(if, else if, else)
에서 각조건(branch)
이 실행되었는지를 검증한다.예를 들어
if(조건1 || 조건2 || 조건3)
과 같은 조건식이 존재할 때,
3개의 조건에 대해true
인 경우와false
인 경우를 각각 측정한다고 알고 있다.
Test 패키지를 오른쪽 마우스로 클릭하고, More Run/Debug
를 선택한 다음
Modify Run Configuration
을 클릭한다.
우측에 존재하는 Modify options
를 클릭한다.
Code Coverage
탭에 있는 Enable branch coverage and test tracking
을 선택한다.
버전에 따라
Use tracking
이라고 나와있을 수도 있다고 한다.
그럼 이렇게 Branch Coverage
에 대한 결과를 얻을 수 있는데,
이렇게 확인하니 아직 테스트 면에서 부족한 부분이 드러났다.
100%
로 측정되지 않은 클래스에 접근하여 좌측 코드라인을 살펴보면 이렇게
녹색
과 갈색
이 표시되는 것을 확인할 수 있다.
테스트되지 않은 부분은 갈색
, 테스트되는 부분은 녹색
으로 표시되는 것이다.
이를 클릭해보면 테스트 코드 상에서
조건이 true
였던 경우와 false
였던 경우의 수가 출력되는데,
갈색
인 부분은 결과값이 한 번도 true
였던 적이 없었기 때문에, 이 클래스의 커버리지가 낮게 측정되었음을 확인할 수 있었다.
이러한 과정을 통해 코드를 개선해나가면 더 안전하고 좋은 코드를 만들 수 있을 것이라고 생각한다.
테스트 코드가 제대로 작성되었는 지, 확인하고 싶다면 이 방법을 통해 측정해보는 것을 추천한다!
잘 보구 갑니다 !