Это разумный подход к тестированию пользовательских интерфейсов с помощью junit? - PullRequest
1 голос
/ 11 марта 2012

Так что я начинаю использовать junit все больше и больше, и все больше и больше разработки, ориентированной на тестирование, и я чувствую себя довольно хорошо.

Тем не менее, я сталкиваюсь с проблемами при попытке протестировать пользовательский интерфейс - мой первый инстинкт заключается в том, чтобы junit создал робота, который управляет мышью и клавиатурой, чтобы имитировать человека, работающего через тест, - но это кажется неэлегичным и не очень устойчивый к изменениям. Я подхожу к этому все неправильно? Какова лучшая практика в этом случае?

Частный случай, на который я смотрю, основан на SWT, но любые общие обзоры были бы хороши :)

Ответы [ 3 ]

2 голосов
/ 15 марта 2012

Я собирался предложить uispec4j . Это, по-видимому, не поддерживает SWT.

Почти все тесты на основе «роботов» будут хрупкими - в случае изменения графического интерфейса вы можете потратить значительное время на исправление тестов. если вы планируете написать фреймворк, вы можете начать с jemmy . Это хорошая модель тестирования графического интерфейса. Тем не менее, Джемми нельзя напрямую использовать в тестах junit.

Рефакторинг пользовательского интерфейса для тестирования результатов в хорошем дизайне. Если вы открыты для такой идеи, попробуйте Model View Presenter pattern

1 голос
/ 24 апреля 2012

Как это происходит - оказывается, что в конкретном случае (не в общем, поэтому я принял другой ответ) SWT - то, что я действительно искал, было http://www.eclipse.org/swtbot/

1 голос
/ 11 марта 2012

Это зависит от типа пользовательского интерфейса, который вы тестируете, но для веб-тестирования посмотрите Selenium , который автоматизирует браузеры и позволяет перемещаться по сайтам и т. Д.

Для тестирования Swing посмотрите FEST , который делает то же самое для приложений Swing.

Для реального тестирования интерфейса они представляют собой обычные подходы, хотя я иногда просто вызываю веб-страницу напрямую, используя Apache HttpClient и смотрю на результаты напрямую (проверяя, нет ли ошибки на странице например). Это часто может быть проще в настройке и менее хрупким в качестве теста.

...