我需要通过输出(在 system.out 中)对现有代码进行 junit 测试
public static void main(String args[])
{
Console console = System.console();
String str = console.readLine();
System.out.println("halo"+str);
}
由于console.readline正在等待用户输入,我发现它会在console.readline()中停止,从而阻止我获取输出。
有办法做到这一点吗?是否可以使用 Mockito 或其他东西来做到这一点?
最佳答案
测试与 System.console() 一起使用的代码几乎是不可能的,因为 System.console()
总是返回 null
在测试中。此外,Console
是没有公共(public)构造函数的最终类。
我建议与 Console
的作者和读者合作,并测试适用于作者和读者的代码。
public static void main(String args[]) {
Console console = System.console();
BufferedReader reader = new BufferedReader(console.reader());
main2(reader, console.writer(), args);
}
static void main2(BufferedReader reader, Writer writer, String args[] {
String str = reader.readline();
System.out.println("halo"+str);
}
可以使用 System Rules 的 StandardOutputStreamLog
规则测试到 System.out
的输出。图书馆。但在您的代码中,写入 Console
的编写器而不是 System.out
要容易得多。
关于java - 使用 Console.readline() 测试 void main 的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21620484/