> Java > java지도 시간 > JUnit에서 콘솔 출력을 테스트하는 방법은 무엇입니까?

JUnit에서 콘솔 출력을 테스트하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-22 07:02:30
원래의
567명이 탐색했습니다.

How to Test Console Output in JUnit?

JUnit에서 콘솔 출력 테스트

잘못된 설계로 레거시 애플리케이션을 테스트할 때 표준 출력에 오류 메시지를 쓰는 코드가 나타날 수 있습니다. JUnit에서 이러한 콘솔 출력을 주장하려면 출력을 리디렉션하고 캡처하는 방법이 필요합니다.

콘솔 출력 리디렉션

Java 시스템은 콘솔 출력을 보내도록 구성할 수 있습니다. 지정된 스트림에. 이 메커니즘을 활용하여 출력을 캡처하고 테스트할 수 있습니다.

ByteArrayOutputStream으로 출력 캡처

ByteArrayOutputStream을 사용하여 콘솔 출력을 캡처할 수 있습니다. 이를 위해 표준 출력 스트림을 ByteArrayOutputStream에 쓰는 새 스트림으로 대체합니다.

예:

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);
}
로그인 후 복사

콘솔 출력 테스트

출력이 캡처되면 다음을 사용하여 해당 콘텐츠를 어설션할 수 있습니다. JUnit의 AssertEquals() 메서드.

예제 테스트 사례:

@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());
}
로그인 후 복사

결론

콘솔 출력을 ByteArrayOutputStreams로 리디렉션 System.setXXX()를 사용하여 시스템 스트림을 구성합니다. JUnit 테스트에서 콘솔 출력을 효과적으로 테스트하고 어설션할 수 있습니다.

위 내용은 JUnit에서 콘솔 출력을 테스트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿