Ответ 1
Если вы хотите изолировать виджеты GWT в отдельности, их не так много. Вы можете использовать GWTTestCase для создания экземпляров ваших виджетов и тестирования через API, что и Google для самих виджетов GWT: Источник для RadioButtonTest
Однако в GWTTestCases механизм работы с событиями не работает, а это значит, что вы не можете делать такие вещи, как программно щелкнуть кнопку и ожидать, что какой-либо метод callback onClick() будет вызван на слушателя. Также трудно, если не невозможно попасть в базовую DOM, поэтому это может быть не лучший инструмент для тестирования низкоуровневого HTML-кода.
Похоже, вы следите за всеми правильными шагами; Статья Роба дает отличное описание того, как писать тестовый код с использованием шаблона проектирования Model-View-Presenter (MVP). Чем больше логики вы держите вне слоя представления, тем лучше. Если это невозможно, используйте инструмент типа Selenium для создания целенаправленных тестов динамического поведения пользовательского интерфейса.
Я следовал аналогичной стратегии - MVP с минимальным кодом в виджетах. В нескольких случаях я написал код, который бы обернул класс Grid, поэтому я смог создать экземпляр моего компонента в GWTTestCase, передать ему Grid, вызвать некоторые методы на моем компоненте и проверить состояние Grid. Я написал статью для Better Software о Test-First GWT, которую вы можете прочитать в моем блоге.
Если вы хотите проверить код, который использует классы GWT, отличные от UI (например, кодирование URL-адресов или словари), вам нужно будет использовать GWTTestCase или следовать аналогичным стратегиям упаковки до тех пор, пока код слишком прост для разрыва. Затем используйте интеграционный тест с инструментом, например Selenium, или несколькими целевыми GWTTestCases, которые проверяют только правильность использования библиотеки - как говорит J.B. Rainsberger: "Не тестируйте фреймворк!"