HotLog

понедельник, 23 августа 2010 г.

Проверка SwingThreadPolicy с помощью JMock

Как известно, все операции с Swing компонентами надо осуществлять в особом EDT (Event Dispatcher Thread) потоке. Таким образом, при тестировании GUI-приложения необходимо проверять также и соблюдение Swing Thread Policy.
Обратно, обращение ко всем методам, способным вызвать блокировку, необходимо проводить в потоке, отличном от EDT во избежании подвисания графического интерфейса.

Для примера возьму задачу о получении данных откуда-то (возможно зависание) и передача их в swing-подсистему. Для этого определим два интерфейса:

Для отображения данных в swing-компоненте


И для получения данных откуда-то:



А вот и класс, который надо протестировать:




Два закоментированных поля олицетворяют две различные ошибки, которые должны быть покрыты тестами.

Непосредственно для тестов нам понадобятся два вспомогательных класса:






А вот и сам тест:




Собственно и все. Небольшая тонкость: метод doAll(Action... actions) возвращает значение от последнего Action в списке параметров, так что returnValue должен стоять последним.

Комментариев нет:

Отправить комментарий