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