如何将输入插入System.in?

时间:2011-09-12 19:55:33

标签: java junit

我正在做一个从System.in读取用户输入的简单赋值,但后来突然想到该赋值需要我创建jUnit测试用例以确认它是否正常工作。那么如何模拟用户在坐在测试用例方法上时将输入插入System.in

3 个答案:

答案 0 :(得分:2)

在您的实施中,请勿直接使用System.in,而应使用通用InputStream

通过这种方式,您可以在测试类中使用带有固定值的ByteArrayInputStream

答案 1 :(得分:1)

您可以传递自定义InputStream,以便模拟所读取的内容。您可以使用System.setIn(..)

设置实施

最简单的实现是让您使用的read(..)方法返回硬编码的内容。您需要什么样的实现取决于您从System.in

中读取的内容

答案 2 :(得分:1)

将以下内容放在测试代码的开头:

StreamWriter writer = new StreamWriter();
Console.SetIn(new StreamReader(writer.BaseStream));

然后你可以通过编写器对象(例如writer.Write(“whatever ......”)或writer.WriteLine(“whatever ......”)将任何你想要的内容写入Console.In流。