我必须测试一个主要方法,我想将东西发送到 System.in,然后查看 System.out 的结果。
我这样做:
public class Check3_1 {
public static void main(String[] args) throws UnsupportedEncodingException {
InputStream originalIn = System.in;
PrintStream originalOut = System.out;
String input = "steve\n";
String expectedOutput = "Hello, steve";
InputStream stream = new ByteArrayInputStream(input.getBytes(StandardCharsets.UTF_8));
// BufferedInputStream bis = new
ByteArrayInputStream bais = new ByteArrayInputStream(new byte[100]);
ByteArrayOutputStream baos = new ByteArrayOutputStream(100);
PrintStream ps = new PrintStream(baos);
System.setIn(bais);
System.setOut(ps);
Homework_3.main(args);
String output = baos.toString(StandardCharsets.UTF_8.name());
System.setIn(originalIn);
System.setOut(originalOut);
System.out.println("actual output: "+output);
System.out.println("correct?: "+output.equals(expectedOutput));
}
}
有更好的方法吗?我可以使用一些技巧,以便在检查一些中间输出后将内容发送到输入吗?可能是我可以用来一直发送新行的输入流实现?可能还有一些我可以用来查看中间输出的打印流?