我正在为 Java 编程竞赛编写一些代码。程序的输入使用标准输入给出,输出在标准输出上。你们是如何测试在标准输入/标准输出上工作的程序的?这就是我的想法:
由于 System.in 是 InputStream 类型,而 System.out 是 PrintStream 类型,所以我用这个原型在 func 中编写了代码:
void printAverage(InputStream in, PrintStream out)
现在,我想使用junit对此进行测试。我想使用字符串伪造 System.in 并接收字符串中的输出。
@Test
void testPrintAverage() {
String input="10 20 30";
String expectedOutput="20";
InputStream in = getInputStreamFromString(input);
PrintStream out = getPrintStreamForString();
printAverage(in, out);
assertEquals(expectedOutput, out.toString());
}
实现 getInputStreamFromString() 和 getPrintStreamForString() 的“正确”方法是什么?
我是否使这比需要的更复杂?