当前位置: 首页 > 面试题库 >

JUnit测试控制台输入和输出

巫马安怡
2023-03-14
问题内容

我只有一种方法。如何检查System.out.println()并将Scanner替换为使用JUnit自动输入值?

PS,请提供一些解决方案…

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int[] arr = new int[4];

    for (int i = 0; i < arr.length; i++) {
        arr[i] = scanner.nextInt();
    }

    for (int i = 0; i < arr.length; i++) {
        int res = 0;
        int k = 0;
        int num = arr[i];
        /*.....*/
        System.out.println(num);
    }
}

问题答案:

理想情况下,提取尴尬的依赖关系,以便您可以在没有依赖关系的情况下进行测试。更改main为简单:

public static void main(String[] args) {
  doWork(new Scanner(System.in), System.out);
}

// TODO: Rename to something meaningful
public static void doWork(Scanner input, PrintStream output) {
  // Remainder of code
}

(考虑使用a Writer代替PrintStreamfor output。)

然后,您实际上不需要进行单元测试main-但您可以doWork使用Scanner基于的进行测试StringReader,并基于的输出进行测试StringWriter,从而提供所需的任何输入并检查输出。



 类似资料:
  • 问题内容: 通过控制台进行任何输入的数据类型(如我使用BufferedReader类所做的那样)为String。之后,我们将其类型转换为需要查询的数据类型(如Inter.parseInt()为整数)。但是在C语言中,我们可以接受任何输入原始数据类型,而在Java中,所有输入类型都是Neccerily String。为什么是这样? 问题答案: 控制台输入实际上以一系列字节而不是字符串的形式读入。这是

  • 我一直在尝试编码来查找给定数组元素的LCM。我的代码如下 我的问题是,当我输入时,输出控制台会冻结。我尝试了另一种没有while循环的方法。也就是说,消除了while循环,并在最后添加了一个if循环。 但现在编译器抛出一个错误,指出并非所有代码路径都返回一个值。有人能帮我解决代码中的问题吗?我是一名编程初学者。提前谢谢!!

  • 问题内容: 我通过Stata学习了数据操纵和分析,并使用log命令记录了所有写入的命令和生成的输出。这样做可以重现我的发现,检查以前的结果并与其他人共享pdf或txt。在Python中使用什么?如果我使用Python Jupyter Notebook或Spyder有区别吗? 问题答案: 执行所需操作的方法是使用命令,如下所述: 记录IPython输出?

  • 我刚刚开始学习Groovy,正在GroovyConsole中进行实验。 有没有办法读取用户输入?我尝试了下面的代码,但我得到了一个错误。 这是我收到的错误: 有什么我需要进口的吗? 任何帮助都会很好。 谢谢

  • 我想并行运行Junit测试。我遇到了以下问题 这些测试是由其他团队开发的,大约有2500个测试套件。测试和测试框架到处都有静态变量。它们的编写使得它们在一次运行一个套件时可以正常工作。当我构建一组这些测试套件并运行它们时,它们甚至没有完成运行。 为了解决这个问题,我有自己的测试运行程序,它通过不同的类加载器(一次一组测试)加载测试套件。我在多个线程中这样做,并从每个线程调用JunitCore的ru

  • 我在Ant构建脚本中使用JUnit5控制台。但是,它在我的项目中找不到任何测试。 我在终端中使用了以下命令: 其返回: 我得到了与Ant脚本相同的输出: