Как известно, все операции с Swing компонентами надо осуществлять в особом EDT (Event Dispatcher Thread) потоке. Таким образом, при тестировании GUI-приложения необходимо проверять также и соблюдение Swing Thread Policy.
Обратно, обращение ко всем методам, способным вызвать блокировку, необходимо проводить в потоке, отличном от EDT во избежании подвисания графического интерфейса.
Для примера возьму задачу о получении данных откуда-то (возможно зависание) и передача их в swing-подсистему. Для этого определим два интерфейса:
Для отображения данных в swing-компоненте
И для получения данных откуда-то:
А вот и класс, который надо протестировать:
Два закоментированных поля олицетворяют две различные ошибки, которые должны быть покрыты тестами.
Непосредственно для тестов нам понадобятся два вспомогательных класса:
А вот и сам тест:
Собственно и все. Небольшая тонкость: метод doAll(Action... actions) возвращает значение от последнего Action в списке параметров, так что returnValue должен стоять последним.
понедельник, 23 августа 2010 г.
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий