有人写了一篇我想测试的课程。它看起来像:
public class foo <E>{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
do_stuff(scan.nextInt());
}
}
我有另一个类试图测试上面函数的main方法如下:
public class Test{
public static void main(String[] args){
System.in.read("5".getBytes());
foo.<Integer>main(new String[]{});
}
}
基本上,我正在尝试使用Test类将输入提供给流,该流将很快被foo中的Scanner读取。我根本无法改变foo,因为它是别人的代码。
为什么这不起作用?这样做的正确方法是什么?
答案 0 :(得分:2)
你的System.in.read("5".getBytes())
所做的是将一个字节数组传递给read
方法,该方法尝试用用户输入填充它。它完全忽略了你放在那个字节数组中的数据。
您必须致电System.setIn()
以更改与System.in
相关的信息流:
System.setIn(new ByteArrayInputStream("5".getBytes()));
foo.<Integer>main(new String[]{});