JUnit에서 커버리지 보고서를 생성하는 방법은?
_____A1: JUnit 자체는 커버리지 도구가 아니므로, JaCoCo, Cobertura, 또는 Emma 같은 코드 커버리지 도구를 연동해야 합니다. 이 도구들은 JUnit 테스트 실행 시 코드를 모니터링하여 커버리지 데이터를 수집하고, 최종적으로 HTML, XML, 또는 CSV 형식의 보고서를 생성합니다.
---
Q2: Maven 프로젝트에서 JUnit 테스트와 함께 커버리지 보고서를 생성하는 방법은?
A2: Maven에서는 JaCoCo 플러그인을 사용하는 것이 일반적입니다. `pom.xml`에 JaCoCo Maven 플러그인을 추가하고, `mvn test` 명령 실행 시 자동으로 커버리지 데이터를 수집합니다. 이후 `mvn jacoco:report` 명령으로 HTML 보고서를 생성할 수 있습니다. 예시 플러그인 설정:
```xml
```
---
Q3: Gradle 프로젝트에서 JUnit과 커버리지 보고서를 생성하는 방법은?
A3: Gradle에서는 `jacoco` 플러그인을 추가한 후, `gradle test jacocoTestReport` 명령을 통해 커버리지 보고서를 생성할 수 있습니다. 예시 `build.gradle` 설정:
```groovy
plugins {
id 'java'
id 'jacoco'
}
test {
finalizedBy jacocoTestReport
jacocoTestReport {
reports {
xml.enabled = true
html.enabled = true
}
}
```
---
Q4: Eclipse IDE에서 JUnit 테스트 실행 후 커버리지 보고서를 보는 방법은?
A4: Eclipse에서는 EclEmma 플러그인을 설치하여 JUnit 테스트를 커버리지 모드로 실행할 수 있습니다. 테스트 실행 시 자동으로 커버리지 데이터를 수집하며, 테스트 후 Eclipse 내에서 라인 별 커버리지 시각화를 제공합니다. 별도의 보고서 파일 생성도 가능합니다.
---
Q5: JaCoCo 커버리지 보고서에는 어떤 정보가 포함되나요?
A5: JaCoCo 보고서에는 메서드, 클래스, 패키지 단위로 다음과 같은 커버리지 비율이 포함됩니다.
- 라인 커버리지 (Line Coverage): 실제 실행된 코드 라인 비율
- 분기 커버리지 (Branch Coverage): 조건문, 분기문의 실행 비율
- 메서드 커버리지 (Method Coverage): 호출된 메서드 비율
- 클래스 커버리지 (Class Coverage): 로드된 클래스 비율
---
Q6: 커버리지 수치가 100%가 아닌 경우 어떻게 개선할 수 있나요?
A6: 커버리지 측정 결과를 보고 테스트되지 않은 코드 라인을 찾아 추가 테스트 케이스를 작성합니다. 조건문과 분기문, 예외 처리 구문 등 테스트 누락 부분을 집중적으로 보완하세요.
---
Q7: JUnit 5에서 커버리지 수집 시 주의할 점이 있나요?
A7: JUnit 5 역시 JaCoCo, EclEmma 등과 같이 작동하며 별도의 설정이 필요 없지만, 모듈 시스템(Java 9 이상) 환경일 경우 JaCoCo 에이전트가 정상 작동하도록 `--add-opens` JVM 옵션 설정이 필요할 수 있습니다.
---
요약:
- JUnit 자체로는 커버리지 측정 불가
- JaCoCo, Cobertura 등 도구 사용 필요
- Maven/Gradle 플러그인 활용해 테스트와 동시에 커버리지 수집 및 보고서 생성 가능
- Eclipse에서는 EclEmma 플러그인으로 GUI 기반 커버리지 확인 가능
- 커버리지 보고서를 바탕으로 테스트 케이스 보완하여 품질 향상 가능
대신, JUnit 테스트를 실행한 후에 커버리지 도구를 함께 사용하여 커버리지 보고서를 생성합니다.
보통 Java 프로젝트에서는 다음과 같은 도구를 주로 사용합니다: 1. JaCoCo (Java Code Coverage Library) JaCoCo는 가장 널리 사용되는 Java 코드 커버리지 도구입니다.
Maven, Gradle, Ant 등과 쉽게 통합할 수 있으며, JUnit 테스트 실행 시 자동으로 커버리지를 수집하고 다양한 형식(HTML, XML, CSV)의 보고서를 생성할 수 있습니다.
2. Cobertura 범용적으로 사용되던 커버리지 도구로, JaCoCo보다 설정이 더 복잡한 편이며 현재는 JaCoCo가 더 많이 쓰이고 있습니다.
3. Emma 이전에 많이 쓰였던 도구지만 개발이 중단된 상태입니다.
--- JUnit과 함께 JaCoCo를 이용해 커버리지 보고서 생성하기 (Maven 기준) 1. 프로젝트에 JaCoCo 플러그인 추가 Maven `pom.xml`에 JaCoCo 플러그인을 설정합니다.
예를 들어: ```xml
2. JUnit 테스트 작성 및 실행 이미 작성된 JUnit 테스트가 있다면 `mvn test` 명령으로 테스트를 수행합니다.
이때 JaCoCo 에이전트가 테스트 실행 중 클래스 사용 정보를 수집합니다.
3. 커버리지 보고서 생성 위 설정대로 하면 `mvn test` 이후에 `target/site/jacoco/index.html` 위치에 HTML 형식의 상세한 커버리지 보고서가 생성됩니다.
브라우저로 열어 보면 메서드, 클래스, 패키지 단위로 커버리지 정도를 확인할 수 있습니다.
--- Gradle을 사용하는 경우 Gradle에서도 JaCoCo 플러그인을 추가해 JUnit 테스트 실행과 함께 커버리지 수집 및 보고서 생성이 가능합니다.
예) ```groovy plugins { id 'java' id 'jacoco' } jacoco { toolVersion = "0.8.10" } test { useJUnitPlatform() finalizedBy jacocoTestReport // 테스트 이후 보고서 생성 } jacocoTestReport { reports { html.required = true xml.required = false csv.required = false } } ``` 이후 `gradle test jacocoTestReport`를 실행하면 `build/reports/jacoco/test/html/index.html`에 커버리지가 생성됩니다.
--- 정리 - JUnit은 커버리지 기능이 없으므로, 코드를 계측하는 커버리지 도구와 통합해야 함 - JaCoCo가 현재 가장 많이 쓰이며 설정이 비교적 쉽고 다양한 빌드 도구와 연동 가능 - Maven, Gradle 프로젝트에 각각 맞는 JaCoCo 플러그인을 설정 후 JUnit 테스트를 실행하면 커버리지 수집 및 보고서 생성 가능 - 결과 HTML 보고서를 통해 어느 라인, 메서드, 클래스가 테스트되었는지 시각적으로 확인 가능 이와 같이 JUnit 테스트를 감싸서 커버리지 도구를 함께 실행함으로써 커버리지 보고서를 생성할 수 있습니다.
작성자:
박하은 [비회원]
| 작성일자: 1년 전
2025-05-26 02:51:02
조회수: 198 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 198 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.