#java #testing #junit #listener #jframe
#java #тестирование #junit #прослушиватель #jframe
Вопрос:
Я сделаю это коротким и конкретным. Я тестирую утилиту командной строки в Java (IDE: Eclipse), и в какой-то момент она генерирует всплывающее окно JFrame, в котором запрашивается пароль. Поскольку я провожу серию автоматических тестов, пароль должен вводиться автоматически. Во всплывающем окне нет кнопки, поэтому достаточно пароля клавиши ввода.
Должен ли я создать какой-либо вид прослушивателя или eventhandler, который ожидает всплывающего окна, перехватить его и ввести пароль? Может быть, что-то вроде process listener?
Любая помощь будет оценена!
Ответ №1:
Дайте вашему полю ввода и вашей кнопке имя (Component.setName()) и используйте фреймворк FEST для роботизированного управления вашим пользовательским интерфейсом: http://fest.easytesting.org /
Но: для подобных случаев было бы интереснее иметь возможность вводить пароль и имя пользователя либо через командную строку (минуя графический интерфейс), либо прочитать его из файла конфигурации. (Оба позже, вероятно, будут добавлены в утилиту в любом случае)
Комментарии:
1. Поскольку я не генерирую поле ввода, я не могу ничего установить (я пишу тесты JUnit). На самом деле есть возможность ввести пароль через командную строку, но когда я затем попытаюсь запустить утилиту через Eclipse, я получу ошибку «нет консоли». Это происходит потому, что, насколько я знаю, это давняя проблема интеграции консольного класса и IDE.
2. Возможно, вы можете попросить разработчиков присвоить полю ввода имя с помощью «setName»? Вы также можете использовать фреймворк, на который я ссылался выше, если имя поля ввода не задано. По сути, это расширение для java.awt.Robot, которое позволяет вам дождаться появления фрейма, а затем вы можете просматривать дерево элементов пользовательского интерфейса и манипулировать ими (например, ввод текста или нажатие кнопки)