어제 오늘 내일

[JUnit5] TestReporter.publishEntry()로 테스트 로그 남기기 본문

IT/JUnit

[JUnit5] TestReporter.publishEntry()로 테스트 로그 남기기

hi.anna 2026. 1. 22. 00:02

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에서 테스트 메타데이터와 함께 수집되고 분석되는 로그가 필요할 때
  • 테스트 상태나 실행 환경을 구조적으로 남기고 싶을 때

특히 팀 단위 프로젝트에서 테스트 품질을 높이고 분석 가능한 로그를 남길 때 매우 효과적이다.

 

반응형
Comments