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