我正在为java编程竞赛编写一些代码.程序的输入是使用stdin给出的,输出是在stdout上.你们如何测试在stdin / stdout上运行的程序?这就是我的想法:
由于System.in的类型为InputStream而System.out的类型为PrintStream,因此我使用此原型在func中编写了我的代码:
void printAverage(InputStream in, PrintStream out)
现在,我想用junit测试一下.我想使用String伪造System.in并在String中接收输出.
@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()的“正确”方法是什么?
我这让它变得比它需要的更复杂吗?