写入将由System.in,java读取的输出

时间:2012-11-28 23:56:36

标签: java unit-testing

有没有办法写入将由System.in输入流读取的输出流?例如:

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.in));

除非因为System.in是输入流而OutputStreamWriter采用输出流,否则不起作用。

我想输出一些将被读取的内容:

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

我要做的是为控制台应用程序编写单元测试。我想以编程方式测试我的输入。任何方式都可以回答我的问题。

3 个答案:

答案 0 :(得分:4)

您应该查看来自setIn()对象的System方法。 http://docs.oracle.com/javase/6/docs/api/java/lang/System.html#setIn%28java.io.InputStream%29

它将允许您重新分配系统输入流。

答案 1 :(得分:2)

我的建议是你用方法(String / int var)创建方法并有一个单独的解析器。然后,您可以测试所有方法,而无需输入。这是单元测试的标准。

答案 2 :(得分:1)

您可以编写和读取stdin / stdout,但我会重构您的代码以分离 您从使用它做什么的输入。

通过这种方式,您可以直接从单元测试中调用“执行”代码。

它还允许将其他输入源插入到您的代码中,例如文件内容,网页内容等。