2009-12-15 5 views
1

Я запускаю тестовый пример Junit на моем приложении eclipse, который был создан с использованием SWT. Я тестирую GUI с помощью SWTBot. Итак, вот моя проблема:Обработка диалоговых окон SWT во время выполнения тестов в режиме безглавых с использованием SWTBOT

editor.bot().button("Make Excel Template").click();

Этот код помогает мне сформировать шаблон в моем приложении. После этого он выдает Modal Dialog с сообщением «OK». Однако я не могу заставить SWTBot найти эту кнопку/виджет/диалоговое окно. Я продолжаю получать «WidgetNotFoundException».

С кем-нибудь это случилось? официальный контент на веб-сайте SWTBot говорит, что диалоговые окна должны запускаться в отдельных потоках, отличных от UI. Однако представленные примеры не очень информативны.

Цените свою помощь!

ответ

0

@ carstenlez - ваше решение хорошо подходит для ящиков диалогового окна JFace. Мое приложение, однако, использует MessageBox - это родной диалог. SWTBot не поддерживает родные диалоги, поэтому я практически не из вариантов.

+0

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

0

Сначала вы должны запустить свои тесты в не-UI-Thread (если это еще не сделано). Во-вторых вы можете использовать условие, чтобы ждать, пока ваш модальное диалоговое окно появится после выполнения действий, которые будут приносить диалог вверх:

bot.waitUntil(Conditions.shellIsActive("This is the title of the modal dialog ")); 
bot.button("OK").click(); 

Это решило наши проблемы синхронизации.