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