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
代替PrintStream
for output
。)
然后,您实际上不需要进行单元测试main
-但您可以doWork
使用Scanner
基于的进行测试StringReader
,并基于的输出进行测试StringWriter
,从而提供所需的任何输入并检查输出。
以上是 JUnit测试控制台输入和输出 的全部内容, 来源链接: utcz.com/qa/426835.html