将对象数组转换为InputStream

时间:2015-06-18 10:54:58

标签: java unit-testing

我有我要测试的程序:

while(true) {
//useful code
    try {
        id = inputValue();
    } catch (InputMatchException e) {
        System.out.println("blahblah");
    }
}


public int inputValue() throws IOException {
    InputStream inputStream = ???
    System.setIn(inputStream);
    Scanner scanner = new Scanner(System.in);
    return scanner.nextInt();
}

这里我希望 inputValue 在第一次迭代时返回字符串并导致 catch 块并且第二次返回0.是否可以执行?循环有条件退出)不用担心它。

1 个答案:

答案 0 :(得分:0)

使用ByteArrayInput/OutputStreams

ByteArrayOutputStream out = new ByteArrayOutputStream();

out.write("My string\n".getBytes());
out.write("0".getBytes());

ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());

然后使用扫描仪从in读取。

您甚至不需要inputValue()方法,因为您只需要在设置时调用scanner.nextInt()