繁体   English   中英

Java命令行程序的TDD和嵌套的readLine()

[英]TDD for Java Command-line program and nested readLine()

基本上,我正在编写一个Java命令行应用程序,该应用程序通过readLine接受用户的参数。 例如,如果用户按“ 1”它将询问用户要签出的书,则用户可以按“ 1”或“ 2”按书号...因此,应用程序两次接受用户参数。 我也尝试使用TDD来同时测试应用程序。

这是问题所在。 如果我做这样的事情来模拟用户输入

System.setIn(new ByteArrayInputStream(PRESS_TWO.getBytes())); // set the first option

Program.main(new String[]{}); // run the program

System.setIn(new ByteArrayInputStream(PRESS_ONE.getBytes())); // set the second option

等待用户选择选项的第一步是可以的,但是它将直接进行第二步,而无需等待第二个输入。 如何在JUnit中对此进行仿真?

谢谢

这就是我阅读输入的方式

 try {

            i1 = Integer.parseInt(reader.readLine());
        }
        catch (Exception e) {
            System.out.println("Enter a valid integer!!");
        }

        if (i1 == 1) {
            System.out.println(" 1. Book1 ");
            System.out.println(" 2. eBook2 ");
            System.out.println(" 3. Book3 ");
        }
        else if (i1 == 2) {
            System.out.println(" Which one do you want?: ");
            int i2 = 0;
            try {
                i2 = Integer.parseInt(reader.readLine());
            }
            catch (Exception e) {
                // Do you know what numbers are!!!
                System.out.println("Enter a valid integer!!");

            }
       }

这取决于您的代码如何读取输入,但是我假设一旦到达第一个ByteArrayInputStream的末尾,您的代码就会看到文件结尾并终止。 尝试将两个流合并为一个(用换行符分隔)。

暂无
暂无

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

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