将任意流连接到标准输入



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

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

我也可以编写一个shell脚本,将我想要的任何内容管道传输到它的stdin中,但有问题的方法将是一系列处理步骤的一部分,因此它本身不应该写入stdout,并实际返回ArrayList<SomeCompositeType>。其中SomeCompositeType包含以结构化方式读取的数据(例如,一些int、数组、映射等)

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

请参阅我的评论。

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

相关内容

  • 没有找到相关文章

最新更新