参考链接:http://blog.csdn.net/hx_uestc/article/details/7235506
测试测序中System.out.println()是否符合预期,需要用Java的管道流PipedInputStream和PipedOutputStream来截取控制台输出流
/*
* 截取控制台输出流(管道)
*/
@Test
public void testPrint(){
/*(直接用)
* 写入到PipedOutputStream输出流的数据可以从对应的PipedInputStream输入流读取
* 建立了一个PipedInputStream,把它设置为所有写入控制台流的数据的最终目的地
* 所有写入到控制台流的数据都被转到PipedOutputStream
* 这样,从相应的PipedInputStream读取就可以迅速地截获所有写入控制台流的数据。
*/
PipedInputStream pipedIS = new PipedInputStream();
PipedOutputStream pipedOS = new PipedOutputStream();
try {
pipedOS.connect(pipedIS);
}
catch(IOException e) {
System.err.println("连接失败");
System.exit(1);
}
PrintStream ps = new PrintStream(pipedOS);
System.setOut(ps);
System.setErr(ps);
new Date(12, 31, -111).printDate(); //测试代码
/*
* 使用bufferreader读取PipedInputStream中的缓冲值
*/
BufferedReader br = new BufferedReader(new InputStreamReader(pipedIS));
StringBuffer sb = new StringBuffer();
try {
String s; //存放截取的值
if((s = br.readLine()) != null){
assertEquals("12/31/-111", s); //断言
}
} catch (IOException e) {
assertTrue(false);
}
}