Как сделать тест gui без отображения в FEST-SWING
В моем проекте мы используем FEST для тестирования графического интерфейса. Мы были убеждены, что FEST является мощным, однако отображение кадров каждый раз является пустой тратой времени. Также мы используем континуум, и FEST не работает с континуумом, потому что континуум maven не может открыть графический интерфейс (кстати, мы также используем maven и наши тесты проходят в maven на нашей локальной машине).
Как я могу решить эту проблему?
Если это невозможно, сообщите нам.
Ответы
Ответ 1
FEST по дизайну отображает пользовательский интерфейс. Если вы не хотите, чтобы тесты блокировали ваш рабочий стол, единственный способ - использовать какой-то виртуальный рабочий стол:
- Xvfb (Linux)
- VMWare (Linux, Windows)
- Автосогласование (Windows - не проверено, найдено где-то в документах)
Подробнее об этом можно прочитать здесь: http://docs.codehaus.org/display/FEST/Continuous+Integration
Может или не может быть связано, но для ускорения ваших тестов взгляните на:
Robot.settings().delayBetweenEvents()
Это определяет, как быстро происходят события мыши и клавиатуры.
Ответ 2
Вы можете использовать Cacio-tta-модуль Caciocavallo... Я знаю, это звучит так, будто я говорю о сыре, но это настоящий проект:
http://openjdk.java.net/projects/caciocavallo/
Структура тестирования состоит из бегуна, который подключается к Fest ( "CacioFESTRunner" ) и позволяет запускать тест без нарушения обычного потока, вам не нужен какой-либо специальный сервер, поскольку у cacio есть все, что вам нужно.
Он также полностью синхронный, поэтому вам не нужно беспокоиться о побочных ошибках из-за асинхронного вывода команды рисования, и она доступна в виде пакета maven, поэтому его очень легко настроить.
Вы можете найти более подробную информацию здесь:
http://jroller.com/neugens/entry/caciocavallo_1_1_released
Ответ 3
Посмотрите WindowLicker:
Структура для тестовых развитие систем Java через GUI.
Я не использовал его сам, но написал некоторые из тех же людей, которые писали JMock, поэтому он должен быть хорошим качеством.