Java UnitTest从System.in输入的多个命令行



我试图测试一个在输入QUIT之前一直循环的函数,但我不知道如何模拟系统中的多行用户输入。

这就是我目前拥有的

String validStartFlow = "START-FLOWrnQUITrn";
ByteArrayInputStream in = new ByteArrayInputStream(validStartFlow.getBytes());
System.setIn(in);
CommandLineListener cmdLineListener = new CommandLineListener(eventBus,logger);
cmdLineListener.startCommandLineListener(in);

永远循环的方法是

while (!userCmd.equals("QUIT")) {
userCmd = "";
Scanner scanner = new Scanner(in);
// BufferedReader reader = new BufferedReader(in);
while (userCmd == null || userCmd.equals("")) {
userCmd = scanner.nextLine();
}
...
}

START-FLOW被完全读取,但之后当它到达scanner.nextLine()时,它会崩溃,并出现以下错误

未找到行java.util.NoSuchElementException:未找到行

如何在QUIT中从validStartFlow字符串中读取它?

在每次迭代中创建一个新的Scanner,每次只访问nextLine()一次。

尝试从循环中提取:

Scanner scanner = new Scanner(in);
scanner.useDelimiter("rn");
String userCmd = "";
while (!userCmd.equals("QUIT")) {
userCmd = scanner.nextLine();
...

最新更新