测试从标准输入读取并写入标准输出的 Java 程序 [英] Test java programs that read from stdin and write to stdout

查看:23
本文介绍了测试从标准输入读取并写入标准输出的 Java 程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在为 Java 编程竞赛编写一些代码.程序的输入是使用 stdin 给出的,输出是在 stdout 上的.你们如何测试在标准输入/标准输出上工作的程序?这就是我的想法:

I am writing some code for a programming contest in java. The input to the program is given using stdin and output is on stdout. How are you folks testing programs that work on stdin/stdout? This is what I am thinking:

由于 System.in 是 InputStream 类型而 System.out 是 PrintStream 类型,我用这个原型在 func 中编写了我的代码:

Since System.in is of type InputStream and System.out is of type PrintStream, I wrote my code in a func with this prototype:

void printAverage(InputStream in, PrintStream out)

现在,我想用 junit 测试一下.我想使用字符串伪造 System.in 并接收字符串中的输出.

Now, I would like to test this using junit. I would like to fake the System.in using a String and receive the output in a 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() 的正确"方法是什么?

What is the 'correct' way to implement getInputStreamFromString() and getPrintStreamForString()?

我是否让这比需要的更复杂?

Am I making this more complicated than it needs to be?

推荐答案

尝试以下操作:

String string = "aaa";
InputStream stringStream = new java.io.ByteArrayInputStream(string.getBytes())

stringStream 是一个从输入字符串中读取字符的流.

stringStream is a stream that will read chars from the input string.

OutputStream outputStream = new java.io.ByteArrayOutputStream();
PrintStream printStream = new PrintStream(outputStream);
// .. writes to printWriter and flush() at the end.
String result = outputStream.toString()

printStream 是一个 PrintStream,它将写入 outputStream ,而后者又将能够返回一个字符串.

printStream is a PrintStream that will write to the outputStream which in turn will be able to return a string.

这篇关于测试从标准输入读取并写入标准输出的 Java 程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆