JUnit으로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!