我正在用Java编写一个控制台应用程序来获取用户的输入 '扫描器'类。每次我在控制台中手动测试我的程序输入时,我都不想输入,所以我想将所有输入放在一个文本文件中,让Java程序读取这个文本文件,而不是再输入输入。
我发现这样做的方法是改变这条线:
Scanner sc = new Scanner(System.in);
到:
Scanner sc = new Scanner(new File(path_to_text_file));
您能否推荐另一种不涉及更改代码的方法?
答案 0 :(得分:1)
如果您无法更改代码,请使用System.setIn
替换您选择的默认输入流。
确保在完成测试后始终将流更改回原始流 - 在这样做时,您正在改变全局状态,因此您可以在其余测试中将事物置于错误状态。 / p>
InputStream previousIn = System.in;
InputStream replacement = new FileInputStream(path_to_text_file);
System.setIn(replacement);
try {
// ... Do your testing.
} finally {
System.setIn(previousIn);
}
或者,更改代码的设计,以便inject the input stream that you depend on。这避免了全局状态的突变,这是一件好事。
答案 1 :(得分:1)