使用
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;@Beforepublic void setUpStreams() { System.setOut(new PrintStream(outContent)); System.setErr(new PrintStream(errContent));}@Afterpublic void restoreStreams() { System.setOut(originalOut); System.setErr(originalErr);}样本测试案例:
@Testpublic void out() { System.out.print("hello"); assertEquals("hello", outContent.toString());}@Testpublic void err() { System.err.print("hello again"); assertEquals("hello again", errContent.toString());}我使用此代码测试了命令行选项(断言-version输出版本字符串等)



