반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Visual Studio Code
- Array
- string
- javascript
- junit5
- 배열
- HashMap
- 인텔리제이
- input
- 테스트자동화
- math
- 자바
- 단위테스트
- Java
- CSS
- list
- junit
- html
- vscode
- 이클립스
- 자바스크립트
- 정규식
- js
- 자바문법
- java테스트
- json
- ArrayList
- 문자열
- IntelliJ
- Eclipse
Archives
- Today
- Total
어제 오늘 내일
[JUnit5] TestReporter.publishEntry()로 테스트 로그 남기기 본문
1. TestReporter란 무엇인가
TestReporter는 JUnit5에서 테스트 실행 과정에서 키-값 형태의 로그 정보를 보고서(Test Report)에 기록할 수 있도록 제공되는 인터페이스이다.
publishEntry() 메서드를 사용하면 테스트 실행 중 남긴 정보를 JUnit 플랫폼이 제공하는 출력 및 리포트 시스템에 안전하게 전달할 수 있다.
일반 System.out.println()과 달리, 테스트 결과와 연계된 구조적 로그를 남길 수 있다는 점이 가장 큰 장점이다.
2. 기본 사용 예제
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestReporter;
class ReporterBasicExample {
@Test
void simpleReport(TestReporter reporter) {
reporter.publishEntry("테스트 시작됨");
}
}
설명
- TestReporter는 파라미터 주입 방식으로 받아 사용한다.
- "테스트 시작됨"이라는 메시지가 테스트 보고서에 남는다.
3. 키-값 형태의 구조적 로그 남기기
@Test
void keyValueReport(TestReporter reporter) {
reporter.publishEntry("status", "OK");
reporter.publishEntry("env", "test");
}
설명
- 단순 문자열보다 의미 있는 “필드 기반 로그”를 남길 수 있다.
- CI/CD에서 테스트 결과를 분석할 때 특히 유용하다.
4. Map을 활용한 복수 데이터 기록하기
@Test
void mapReport(TestReporter reporter) {
Map<String, String> data = new HashMap<>();
data.put("step", "1");
data.put("description", "사용자 데이터 초기화");
reporter.publishEntry(data);
}
설명
- 한 번 호출로 여러 정보를 한꺼번에 기록할 수 있다.
- 테스트 실행 중 단계별 로깅을 남길 때 유용하다.
5. TestReporter 활용 시 장점
- JUnit이 제공하는 공식 테스트 리포트 시스템과 자연스럽게 연동됨
- 테스트 로깅을 구조화하여 수집/분석이 쉬워짐
- 테스트 메타데이터와 분리되지 않고 함께 수집됨
- CI 환경에서 단계별 상태 추적에 적합
특히 로깅을 출력 스트림에 남기는 것보다 보존성이 훨씬 높다.
6. BeforeEach, AfterEach에서도 활용 가능
테스트 라이프사이클 전체에서 사용할 수 있다.
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.AfterEach;
class ReporterLifecycleExample {
@BeforeEach
void before(TestReporter reporter) {
reporter.publishEntry("beforeEach", "준비 완료");
}
@AfterEach
void after(TestReporter reporter) {
reporter.publishEntry("afterEach", "정리 완료");
}
@Test
void test() {}
}
설명
- 테스트 전후 상태를 남기면 디버깅이나 리포트 분석이 훨씬 쉬워진다.
7. TestReporter를 사용하면 좋은 상황 요약
- 테스트 실행 흐름을 단계별로 남기고 싶을 때
- 단순 출력 대신 리포트 기반 로그가 필요할 때
- CI에서 테스트 메타데이터와 함께 수집되고 분석되는 로그가 필요할 때
- 테스트 상태나 실행 환경을 구조적으로 남기고 싶을 때
특히 팀 단위 프로젝트에서 테스트 품질을 높이고 분석 가능한 로그를 남길 때 매우 효과적이다.
반응형
'IT > JUnit' 카테고리의 다른 글
| [JUnit5] dynamicTest()로 동적 테스트 정의하기 (0) | 2026.01.23 |
|---|---|
| [JUnit5] TestReporter에서 Map 기반 로그 기록하기 (0) | 2026.01.22 |
| [JUnit5] TestInfo.getTestMethod()로 테스트 메소드 정보 확인하기 (1) | 2026.01.21 |
| [JUnit5] TestInfo.getTestClass()로 테스트 클래스 정보 얻기 (0) | 2026.01.21 |
| [JUnit5] TestInfo.getTags()로 태그 메타데이터 조회하기 (0) | 2026.01.20 |
Comments
