将任意流连接到标准输入

时间:2012-08-20 00:24:02

标签: java unit-testing stream pipe

我有一个需要处理Standard-In数据的程序。我可以在命令行上调用它,如java program < input。我想为它的main()编写一个合适的单元测试。是否可以将方法的System.in与其他流重新关联?

在测试中,我可以读取示例数据,然后以某种方式运行原始程序,其stdin连接到我定义的一些流(从示例数据)并验证它返回我期望的。我考虑过使用这些类: PipedInputStreamPipedOutputStream。但是每次我测试它时都需要我修改原始程序以从PipedInputStream中读取。或者我可以将流读取隔离到一个函数(例如parseStream(InputStream))并传递已连接到样本数据的PipedInputStream。

我还可以编写一个shell脚本来管道我想要的任何东西到stdin,但是这个方法将是一系列处理步骤的一部分,因此它本身不应该写入stdout并实际返回ArrayList&lt; SomeCompositeType&gt; 。 SomeCompositeType包含以结构化方式读取的数据(例如,一些整数,数组,地图等)。

那么可以调用一些从System.in读取不同流的方法吗?

1 个答案:

答案 0 :(得分:1)

请参阅my comment

您似乎想要的内容由System.setIn提供: - )