Frage

Was ist der beste Weg, GWT-Code zu testen?

GWTTestCase in Host-Modus ist zu langsam und keiner der spöttischen Frameworks zu arbeiten.

Zur Zeit verfolgen wir MVC wie in http://robvanmaris.jteam.nl/2008/03/09/test-driven-development-for-gwt-ui-code/ und mit GWTMockUtilities entwaffnen () und restore () Widgets zu verspotten . Und wir haben einen Weg gefunden, Blick in GWT MVC zu testen. Gibt es einen besseren Weg, GWT-Code zu testen?

War es hilfreich?

Lösung

Wenn Sie schauen, GWT Widgets isoliert zu testen, gibt es nicht viele Optionen. Sie können eine GWTTestCase verwenden, um Ihre Widgets zu instanziiert und es durch seine API testen, das ist, was Google tut für die GWT Widgets selbst: Quelle für RadioButtonTest

Allerdings ist die ereignis Zündmechanismus nicht in GWTTestCases arbeiten, was bedeutet, können Sie die Dinge nicht tun, wie programmatisch auf eine Schaltfläche klicken und einige onClick () Callback-Methode erwarten auf einem Hörer aufgerufen werden. Es ist auch schwer, wenn nicht unmöglich, an dem zugrunde liegenden DOM zu bekommen, so kann es das beste Werkzeug für die Prüfung Low-Level-HTML-emittierende Code nicht sein.

Es klingt wie Sie die richtigen Schritte folgen; Robs Artikel bieten eine ausgezeichnete Beschreibung, wie prüfbaren Code zu schreiben, die Model-View-Presenter (MVP) Entwurfsmuster verwenden. Je mehr Logik halten Sie von der View-Ebene aus, desto besser. Wenn das nicht möglich ist, ein Tool wie Selen verwenden fokussieren Tests des dynamischen Verhaltens der Benutzeroberfläche zu erstellen.

Ich folgte eine ähnliche Strategie - MVP mit minimalem Code in dem Widgets. In einigen Fällen habe ich einige Code schreiben, der die Grid-Klasse wickeln würde, so konnte ich meine Komponente in einem GWTTestCase instanziiert es ein Gitter passieren, einige Methoden auf meine Komponente aufrufen und prüfen Sie den Zustand des Grid. Ich schrieb einen Artikel für eine bessere Software zu Test-First GWT, die Sie lesen können, auf meinem Blog .

Wenn Sie schauen, Code zu testen, die nicht-UI GWT-Klassen (wie URL-Codierung oder Wörterbücher) verwendet, müssen Sie GWTTestCase verwenden, oder aber ähnliche Verpackung Strategien folgen, bis der Code ist zu einfach zu brechen. Verwenden Sie dann einen Integrationstest mit einem Tool wie Selen oder ein paar gezielten GWTTestCases des nur Test, der die Bibliothek richtig verwenden - „Gerüst nicht testen“, wie J. B. Rainsberger sagt,

Andere Tipps

Als alernative, sollten Sie versuchen, GWT-Test-utils , die Verwaltung von GWT Client-Code in einer eigenständigen JVM und bietet einige Funktionen zu Mock, was Sie wollen (Komponente, RPC-Dienste, etc ..)

laufen

Was für mich gearbeitet:

Mit klassischen Model / View / Controller (z keine Business-Logik in der Ansicht oder Controller, Controller übersetzen nur View-Ereignisse in Verfahren nach dem Vorbild nennt).

entkoppeln des Modell und Controller-Code aus der GWT Ansicht Widgets und alle anderen Klassen, die auf GWT verlassen und kann nicht in einem einfachen alten JVM instanziert werden. Sie können sie dann testen Sie mit dem guten alten JUnit.

Write End-to-End-Tests das System über die GUI zu testen, um sicherzustellen, dass die Modelle und Controller richtig auf die Ansichten angeschlossen. Wir fanden es schneller zu implementieren und die App starten und dann mit ihm über einen Browser von JUnit mit WebDriver gesteuert interagieren als GWTTestCase zu verwenden!

Mit JMock testen asynchrone Aufrufe wie folgt aus: http://www.jmock.org/gwt. html .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top