JUnit测试控制台输入和输出

我只有一种方法。如何检查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,从而提供所需的任何输入并检查输出。

以上是 JUnit测试控制台输入和输出 的全部内容, 来源链接: utcz.com/qa/426835.html

回到顶部