TDD для Java Программа командной строки и вложенный readLine () - PullRequest
0 голосов
/ 05 марта 2011

По сути, я пишу приложение командной строки 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!!");

            }
       }

1 Ответ

0 голосов
/ 05 марта 2011

Это зависит от того, как ваш код читает входные данные, но я предполагаю, что как только будет достигнут конец первого ByteArrayInputStream, ваш код увидит конец файла и завершится. Попробуйте объединить два потока в один (разделенный новой строкой).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...