JUnit에서 'System.out.println()'을 단위 테스트하는 방법은 무엇입니까?
Dec 29, 2024 pm 07:57 PMJUnit으로 System.out.println() 테스트
표준 출력에 오류 메시지를 기록하는 애플리케이션에 대한 JUnit 테스트를 어떻게 작성할 수 있습니까? , 특히 이러한 메시지가 일관성이 없고 신뢰할 수 없는 경우에는 더욱 그렇습니다. 이러한 시나리오를 효과적으로 테스트하려면 콘솔 출력을 캡처하고 해당 콘텐츠를 어설션해야 합니다.
콘솔 출력 리디렉션
콘솔 출력을 캡처하려면 표준 출력(System.out)을 모두 리디렉션해야 합니다. ) 및 테스트 중 표준 오류(System.err)가 발생합니다. 이는 ByteArrayOutputStream 및 System.setXXX 메서드를 사용하여 달성할 수 있습니다. 구현 예는 다음과 같습니다.
private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); private final ByteArrayOutputStream errContent = new ByteArrayOutputStream(); private final PrintStream originalOut = System.out; private final PrintStream originalErr = System.err; @Before public void setUpStreams() { System.setOut(new PrintStream(outContent)); System.setErr(new PrintStream(errContent)); } @After public void restoreStreams() { System.setOut(originalOut); System.setErr(originalErr); }
샘플 테스트 사례
콘솔 출력이 리디렉션되면 예상되는 출력을 확인하는 테스트 사례를 작성할 수 있습니다.
@Test public void out() { System.out.print("hello"); assertEquals("hello", outContent.toString()); } @Test public void err() { System.err.print("hello again"); assertEquals("hello again", errContent.toString()); }
이 테스트 사례에서는 시스템 출력이 예상대로인지 확인하여 애플리케이션 로그가 다른 요청과 일치하는지 확인할 수 있습니다.
참고: 이 답변의 이전 버전에서는 테스트 후에 System.setOut(null)이 사용되었으므로 NullPointerException이 발생할 수 있습니다. 업데이트된 코드는 이러한 문제를 방지하기 위해 각 테스트 후에 원본 스트림을 올바르게 복원합니다.
위 내용은 JUnit에서 'System.out.println()'을 단위 테스트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











2025 년 상위 4 개의 JavaScript 프레임 워크 : React, Angular, Vue, Svelte

Java의 클래스로드 메커니즘은 다른 클래스 로더 및 대표 모델을 포함하여 어떻게 작동합니까?

고급 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 또는 Gradle을 어떻게 사용합니까?

카페인 또는 구아바 캐시와 같은 라이브러리를 사용하여 자바 애플리케이션에서 다단계 캐싱을 구현하려면 어떻게해야합니까?

Spring Boot Snakeyaml 2.0 CVE-2022-1471 문제 고정
