Я пытаюсь протестировать консольное приложение, которое использует jline для обработки взаимодействия с пользователем.
Я запускаю приложение с помощью ProcessBuilder. который дает мне доступ к приложениям:
Я ожидал использовать рабочий процесс, подобный этому:
- Запустить приложение
- Читать вывод, пока не появится приглашение приложения
>
- Отправить ввод для моего тестового примера, например.
login
- Читайте вывод, пока я не увижу ожидаемый ответ, например.
Username:
- и так далее
Однако тест просто зависает. Проходя код, оказывается, что jline зависает при вызовах JNI на _getch в Windows. Я предполагаю, что проблема в том, что я запускаю Java из ProcessBuilder, который безголовый, поэтому нет консоли, и это сбивает с толку окна. Установка -Djline.terminal=jline.UnsupportedTerminal
в соответствии с документами Jline также не помогает.
Я нашел ветку, в которой обсуждается Python pexpect для тестирования (не-java) приложения readline.
Вопрос: как я могу протестировать приложение на основе jline, используя только инструменты Java?