Подтвердить что ты не робот

Каков наилучший способ проверки кода GWT

Каков наилучший способ проверки кода GWT?

GWTTestCase в режиме размещения слишком медленный, и ни одна из насмешливых фреймворков не работает.

В настоящее время мы следуем MVC, как предложено в http://robvanmaris.jteam.nl/2008/03/09/test-driven-development-for-gwt-ui-code/ и с помощью GWTMockUtilities disarm() и restore(), чтобы имитировать виджеты. И мы havent выяснили способ тестирования View в GWT MVC. Есть ли лучший способ проверить код GWT?

4b9b3361

Ответ 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: "Не тестируйте фреймворк!"

Ответ 2

В качестве альтернативы вам следует попробовать gwt-test-utils, которым удается запустить клиентский код GWT в автономной JVM и предоставляет некоторую функцию Mock все, что вы хотите (компонент, службы RPC и т.д.)

Ответ 3

Что сработало для меня:

Используйте классическую модель/представление/контроллер (например, нет бизнес-логики в представлении или контроллере, контроллеры только переводят события просмотра в вызовы методов на модели).

Развяжите модель и код контроллера с виджетами просмотра GWT и любыми другими классами, которые полагаются на GWT и не могут быть созданы в простой старой JVM. Затем вы можете проверить их с помощью старого старого JUnit.

Записывайте сквозные тесты для проверки системы через графический интерфейс, чтобы убедиться, что модели и контроллеры правильно подключены к представлениям. Нам посчастливилось развертывать и запускать приложение, а затем взаимодействовать с ним через браузер, управляемый JUnit с помощью WebDriver, чем использовать GWTTestCase!

Используйте JMock для тестирования асинхронных вызовов следующим образом: http://www.jmock.org/gwt.html.