Поймать всплывающее окно JFrame, сгенерированное Java

#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, которое позволяет вам дождаться появления фрейма, а затем вы можете просматривать дерево элементов пользовательского интерфейса и манипулировать ими (например, ввод текста или нажатие кнопки)