0

我有一个程序需要处理来自标准输入的数据。我可以像这样在命令行上调用它java program < input。我想为其 main() 编写一个适当的单元测试。是否可以将方法的 System.in 与其他流重新关联?

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

我还可以编写一个 shell 脚本来将我想要的任何内容通过管道传输到它的标准输入中,但是所讨论的方法将是一系列处理步骤的一部分,因此它本身不应该写入标准输出并实际上返回 ArrayList<SomeCompositeType>。SomeCompositeType 包含以结构化方式读取的数据(例如,一些整数、数组、地图等)

那么是否可以使用不同的流调用从 System.in 读取的某些方法?

4

1 回答 1

1

我的评论

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

于 2012-08-20T00:32:28.120 回答