Самый простой способ модульного тестирования приложений SWT и Swing в автономной среде?

Я хочу провести модульное тестирование кода SWT и Swing для проекта, над которым я работаю, и тесты работают нормально, пока я запускаю их из eclipse.

Как только я запускаю их в своей среде hudson, происходит сбой, поскольку hudson запускает тесты в автономном режиме.

Как лучше всего это сделать? Пожалуйста, только решения с открытым исходным кодом (так как проект с открытым исходным кодом).


person Allain Lalonde    schedule 16.10.2009    source источник


Ответы (6)


Вы можете запустить Xvfb (виртуальный фреймбуфер X, X11 сервер, который выполняет все графические операции в памяти) и это прекрасно работает.

Но есть и другое решение с помощью плагина Hudson для Xvnc. Просто установите плагин и установите флажок на экране конфигурации задания:

http://www.justinedelson.com/blog/wp-content/uploads/xvnc_box.jpg

Затем Hudson автоматически запустит сеанс Xvnc и установит для переменной среды DISPLAY соответствующее значение, а затем закроет сеанс после завершения сборки. Одним из преимуществ этого метода по сравнению с методом Xvfb является то, что при одновременной сборке нескольких проектов Swing/SWT каждая сборка имеет свой собственный X-сеанс. Это может быть вообще не проблема, но это кажется хорошей идеей.

Перед использованием этого плагина у вас, очевидно, должен быть установлен Xvnc. Что менее очевидно (хотя и разумно), так это то, что вы также должны установить пароль. Вы делаете это, запустив:

$ vncpassword

Это должно быть сделано от имени того же пользователя, от имени которого работает Hudson.

person Pascal Thivent    schedule 16.10.2009

Попробуйте GUI Testing Framework Abbot Java и SWTbot. По крайней мере, SWTbot должен уметь это делать.

Если ни один из них не предлагает безголовый режим, тогда эта запись в блоге может подсказать вам, как избавиться от пользовательского интерфейса для тестирования.

person Aaron Digulla    schedule 16.10.2009

Используя Swing, я склонен организовывать вещи так, чтобы дерево компонентов можно было создать без окна наверху. Это позволит вам просто создать JPanel в модульном тесте и использовать его в качестве компонента верхнего уровня. Есть определенные вещи, которые вы не можете проверить, например, фокус и любую логику, связанную с созданием фрейма для нормальной работы, но подавляющее большинство можно проверить.

Вы можете заглянуть в библиотеку FEST, чтобы облегчить себе жизнь независимо от того, работаете ли вы без головы или нет, она выглядит очень хорошо: http://fest.easytesting.org/swing/wiki/pmwiki.php

person Russ Hayward    schedule 16.10.2009

Я был уверен, что размещал это здесь раньше, не уверен, что с ним случилось.

Cacio позволяет запускать приложение Swing без головы.

http://rkennke.wordpress.com/2011/10/17/cacio-for-ui-testing/

person Glen    schedule 04.04.2012
comment
Этот проект теперь размещен на GitHub github.com/CaciocavalloSilano/caciocavallo. - person Glen; 07.10.2019

Вы можете попробовать среду тестирования RedDeer https://github.com/jboss-reddeer/reddeer

• Поддержка запуска тестов в среде Jenkins CI (например, Hudson).

person brunocrt    schedule 17.08.2016

Я не знаю о SWT, но с Swing вы не можете. Любой экземпляр окна (JFrame, JDialog и т. д.), даже если он никогда не был видимым, взорвется в безголовом режиме (в JDK 5). Мы не запускали в автономном режиме и не устанавливали Xvfb, чтобы обеспечить работу с окнами, фактически не имея Установлена ​​настоящая оконная система.

person Yishai    schedule 16.10.2009