Как лучше всего тестировать код GWT [закрыто]

StackOverflow https://stackoverflow.com/questions/411257

  •  03-07-2019
  •  | 
  •  

Вопрос

Как лучше всего тестировать код GWT?

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

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

Это было полезно?

Решение

Если вы хотите тестировать GWT-виджеты изолированно, вариантов не так много. Вы можете использовать GWTTestCase для создания экземпляров ваших виджетов и тестирования его через API, что и делает Google для самих виджетов GWT: Источник для RadioButtonTest

Однако механизм генерации событий не работает в GWTTestCases, что означает, что вы не можете делать такие вещи, как программно нажимать кнопку и ожидать, что какой-нибудь метод обратного вызова onClick () будет вызван на слушателе. Также трудно, если не невозможно, получить доступ к базовому DOM, поэтому он не может быть лучшим инструментом для тестирования низкоуровневого кода, генерирующего HTML.

Похоже, вы выполняете все правильные шаги; Статья Роба дает отличное описание того, как писать тестируемый код, используя шаблон проектирования Model-View-Presenter (MVP). Чем больше логики вы держите вне слоя представления, тем лучше. Когда это невозможно, используйте такой инструмент, как Selenium, для создания целенаправленных тестов поведения динамического интерфейса.

Я придерживался аналогичной стратегии - MVP с минимальным кодом в виджетах. В некоторых случаях я написал код, который обернул бы класс Grid, поэтому я смог создать экземпляр своего компонента в GWTTestCase, передать ему Grid, вызвать некоторые методы для моего компонента и проверить состояние Grid. Я написал для Better Software статью о Test-First GWT, которую вы можете прочитать в моем блоге .

Если вы хотите протестировать код, который использует не-UI GWT-классы (такие как URL-кодирование или словари), вам нужно будет использовать GWTTestCase или следовать аналогичным стратегиям обертывания, пока код не станет слишком простым для взлома. Затем используйте интеграционный тест с таким инструментом, как Selenium, или несколько целевых GWTTestCases, которые проверяют только то, что вы используете библиотеку правильно - как говорит Дж. Б. Рейнсбергер: «Не тестируйте фреймворк!»

Другие советы

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top