有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java文件:如何自动测试从用户处获取输入的控制台应用程序

我正在用Java编写一个控制台应用程序,通过 “扫描器”课。我不想每次测试程序时都在控制台中手动输入,所以我想把所有输入放在一个文本文件中,让Java程序读取这个文本文件,而不是再次输入

我发现这样做的方式是改变路线:

Scanner sc = new Scanner(System.in);

致:

Scanner sc = new Scanner(new File(path_to_text_file));

你能推荐另一种不需要修改代码的方法吗


共 (1) 个答案

  1. # 1 楼答案

    如果绝对无法更改代码,请使用^{}将默认输入流替换为您选择的输入流之一

    在完成测试后,一定要将流更改回原来的流——这样做是在改变全局状态,以便在剩下的测试中保持不好的状态

    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。这避免了全局状态的突变,这是一件好事