Что лучший способ состоит в том, чтобы протестировать [закрытый] код GWT

17
задан tvanfosson 4 January 2009 в 16:56
поделиться

3 ответа

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

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

Это кажется, что Вы выполняете все правильные шаги; статья Rob предоставляет превосходное описание того, как написать тестируемый код с помощью шаблона разработки Образцового Предъявителя представления (MVP). Чем более логичный Вы держитесь в стороне слой представления, тем лучше. Когда это не будет возможно, используйте инструмент как Селен для создания сфокусированных тестов динамического поведения UI.

я следовал подобной стратегии - MVP с минимальным кодом в виджетах. В нескольких случаях я действительно писал некоторый код, который перенесет класс Сетки, таким образом, я смог инстанцировать своего компонента в GWTTestCase, передать его Сетка, вызовите некоторые методы на мой компонент и проверьте состояние Сетки. Я написал статью для Лучшего программного обеспечения о Тесте Первый GWT, который можно считать на моем блоге .

, Если Вы обратитесь к тестовому коду, который использует неUI классы GWT (такие как кодирование URL или Словари), то необходимо будет использовать GWTTestCase или иначе следовать подобным стратегиям обертывания, пока код не будет слишком прост для повреждения. Затем используйте интеграционный тест с инструментом как Селен, или некоторые были нацелены на GWTTestCases, которые только тестируют это, Вы пользуетесь библиотекой правильно - как J.B. Rainsberger заявляет, "Не тестируют платформу!"

14
ответ дан 30 November 2019 в 12:37
поделиться

What worked for me:

Use classical model/view/controller (e.g. no business logic in the view or controller; controllers only translate view events into method calls on the model).

Decouple the model and controller code from the GWT view widgets and any other classes that rely on GWT and can't be instantiated in a plain old JVM. You can then test them with good old JUnit.

Write end-to-end tests to test the system through the GUI to ensure that the models and controllers are hooked up to the views correctly. We found it faster to deploy and start up the app and then interact with it through a browser controlled from JUnit with WebDriver than to use GWTTestCase!

Use JMock to test asynchronous calls like this: http://www.jmock.org/gwt.html.

4
ответ дан 30 November 2019 в 12:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: