我正在用Java为编程竞赛编写一些代码。程序的输入是使用stdin给出,输出是在stdout上。您们是如何测试适用于stdin / stdout 的程序的呢?这是我的想法:
由于System.in是InputStream类型,而System.out是PrintStream类型,因此我编写了一个具有以下原型的函数:
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());
}
'correct'方法实现getInputStreamFromString()和getPrintStreamForString()是什么?
我是否把它搞复杂了?