1

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

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

除非那不起作用,因为 System.in 是输入流,而 OutputStreamWriter 需要输出流。

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

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

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

4

3 回答 3

4

你应该看看对象的setIn()方法Systemhttp://docs.oracle.com/javase/6/docs/api/java/lang/System.html#setIn%28java.io.InputStream%29

它会让您重新分配系统输入流。

于 2012-11-29T00:00:45.630 回答
2

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

于 2012-11-29T00:00:28.127 回答
1

您可以对 stdin/stdout 进行读写操作,但我会重构您的代码,以将您 如何获取输入与使用它的操作分开。

这样你就可以直接从你的单元测试中调用“做”代码。

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

于 2012-11-29T00:04:14.673 回答