有没有办法写入将由System.in输入流读取的输出流?例如:
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.in));
除非因为System.in是输入流而OutputStreamWriter采用输出流,否则不起作用。
我想输出一些将被读取的内容:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
我要做的是为控制台应用程序编写单元测试。我想以编程方式测试我的输入。任何方式都可以回答我的问题。
答案 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,但我会重构您的代码以分离 您从使用它做什么的输入。
通过这种方式,您可以直接从单元测试中调用“执行”代码。
它还允许将其他输入源插入到您的代码中,例如文件内容,网页内容等。