【发布时间】:2012-10-31 00:35:46
【问题描述】:
我正在为 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() 的“正确”方法是什么?
我是否让这变得比它需要的更复杂?
【问题讨论】: