我正在为Java中的基于控制台的应用程序设置一些测试用例。以下是我的代码:
ByteArrayInputStream in = new ByteArrayInputStream("input 1\ninput 2".getBytes());
System.setIn(in); //feeds inputs
ByteArrayOutputStream out = new ByteArrayOutputStream();
System.setOut(new PrintStream(out)); //captures output
TestProgram.test();
String output = out.toString();
System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out)));
System.out.println(output);
应用程序在控制台和用户之间来回简单 - 控制台提出问题,用户给出答案。因此,例如,根据上面的输入,控制台在交互结束时可能看起来如下所示:
Please enter a color: input 1
Please enter your name: input 2
...其中input 1
和input 2
是用户的输入,提示是从print
的{{1}}命令发出的。
我想捕捉控制台在交互结束时的样子(即输入和输出一起),但似乎我只能独立捕获输入和输出。如何从上面修改我的代码以捕获生成的控制台显示,输入和输出适当地编织在一起?
答案 0 :(得分:0)
您可以在数组中记录input
和output
并将它们推送到一起。
我不理解 100%,但您可以将它们存储在数组中。
String[] s = (out.toString() + in.toString()).split("\n");
for(String a : s) System.out.println(a);
希望有所帮助