ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 코드에서 테스트 커버리지 제외하기
    Java 2021. 9. 5. 12:42

    테스트 코드를 작성하다보면 테스트 커버리지를 제외하고 싶은 순간이 있을 수 있습니다. 대표적으로 롬복 어노테이션을 쓰는 경우(@Getter), equals와 hashCode 메서드, 스프링 어플리케이션을 실행하는 App 클래스 등이 있습니다.

    이런 코드들은 딱히 테스트 코드를 작성할 때의 이점이 딱히 없기 때문에, 제가 교육을 들으며 적용한 테스트 커버리지에서 제외시키는 간단한 방법들에 대해 알아보겠습니다.

    자바의 코드 커버리지를 측정하는 도구인 Jacoco, 빌드 도구는 gradle을 기준으로 설명하겠습니다.


    @Generated 

    사용법은 간단합니다. 메서드나 클래스 위에 어노테이션을 추가해주기만 하면 됩니다.

    다음은 어노테이션을 추가하기 전 App 클래스 입니다.

    이 어노테이션은 다음과 같이 정의되어 있습니다.

    @Documented
    @Retention(RUNTIME)
    @Target({TYPE, METHOD})
    public @interface Generated {
    }

    여기서 이 어노테이션을 추가하고, 빌드 후 테스트를 다시 실행하였습니다.

    App 클래스가 없어졌다.

    클래스에 추가하니 커버리지에서 아예 제외된 모습을 볼 수 있습니다.

    롬복이 추가한 메서드 제외하기

    롬복이 생성한 메서드 등을 제외하는 방법입니다. 대표적으로 Getter 메서드 등을 제외할 때 자주 쓰입니다.

    프로젝트 루트 경로에 lombok.config 파일을 생성하고, 다음과 같이 작성해줍니다.

    lombok.addLombokGeneratedAnnotation = true

    그리고 나서 서버를 재시작 후, 다시 커버리지를 보면 롬복 관련 코드는 제외된 것을 확인할 수 있습니다.

    그 외 - gradle에서 파일 지정하기

    gradle에서 파일을 지정하여 설정할 수 있고, 와일드카드 형식(*)도 지원합니다.


    참고 링크

    - https://www.baeldung.com/jacoco-report-exclude 

    댓글

Designed by Tistory.