繁体   English   中英

Java 来自 System.in 的 UnitTest 多命令行输入

[英]Java UnitTest multiple command Line input from System.in

我正在尝试测试一个 function,它会一直循环直到输入QUIT ,但我不知道如何模拟来自系统的多行用户输入。

这就是我目前拥有的

String validStartFlow = "START-FLOW\r\nQUIT\r\n";
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:找不到行

我怎样才能让它从validStartFlow字符串中读取QUIT

您在每次迭代时创建一个新的Scanner并且每次只访问一次nextLine()

尝试从循环中提取它:

Scanner scanner = new Scanner(in);
scanner.useDelimiter("\r\n");
String userCmd = "";

while (!userCmd.equals("QUIT")) {
        userCmd = scanner.nextLine();
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM