我有一个程序需要处理来自 Standard-In 的数据。我可以像这样在命令行上调用它 java program < input
。我想为其 main() 编写一个适当的单元测试。是否可以将方法的 System.in 与其他流重新关联?
在测试中,我可以读取示例数据,然后以某种方式运行原始程序,并将其标准输入连接到我定义的某个流(来自示例数据),并验证它是否返回我期望的内容。我考虑过使用这些类:
PipedInputStream和
PipedOutputStream 。但这需要我每次测试时都修改原始程序以从 PipedInputStream 读取。或者,我可以将流读取隔离到函数中(例如 parseStream(InputStream)
)并传递已连接到示例数据的 PipedInputStream。
我还可以编写一个 shell 脚本来将我想要的任何内容通过管道传输到其标准输入中,但是所讨论的方法将是一系列处理步骤的一部分,因此它本身不应该写入标准输出并实际上返回 ArrayList
那么是否可以调用一些使用不同流从 System.in 读取的方法?
最佳答案
参见my comment .
您似乎想要的内容由 System.setIn
提供:-)
关于java - 将任意流连接到标准输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12031048/