Frage

Ich bin gespannt, wie viele von euch Leute integrieren spöttisch von Objekten (Frameworks wie JMock, NMock, RhinoMocks Hand in Hand mit Einheit Test-Frameworks) in Ihren täglichen Entwicklungsprozess. Was sind Ihre Erfahrungen?

Sie sehen, entwickle ich auf einem GIS (Geographische Informationssysteme) -Plattform, in denen die meisten der Arbeit zu einem gewissen Art und Weise der Handhabung Daten betrifft. Als Datenobjektmodell ist sehr komplex (viele viele Klassen und Schnittstellen, die alle COM-basiert), ist es auch sehr schwierig und umständlich zu verspotten. In diesem Fall entsteht spöttische vielen Aufwand bei den Testsuiten zu schreiben. Ich frage mich, ob es Menschen in einer ähnlichen Situation sind, oder einfach nur, wie kommt spöttischen (in welcher Situation Sie sich befinden) für Sie arbeiten.

War es hilfreich?

Lösung

Bei einem kürzlichen Projekt, das ich gearbeitet habe, wir Mock-Objekte ausführlich in unserem Unit-Test-Ansatz verwendet. Das Projekt war 100% Java und mittlere Größe (ca. 100.000 Zeilen von nicht-kommentierten Code). Es war ein Swing-basierte Desktop-Anwendung - und der einzige effektive Weg, dass wir die Benutzeroberfläche Logik war durch ein MVC-Variante Design testen gefunden, den uns Mock-Objekte ersetzen für die aktuellen Swing-Benutzeroberfläche Klassen für die automatisierten Tests zu nutzen. Wir haben auch ausgiebig in der Prüfung unserer Datenzugriffsschicht (Hibernate / DAOs) spöttisch.

In dem Benutzer inteface Einsatz waren die Mocks einfach und unkompliziert zu bauen. Und das Design der Anwendung (Fowler Passive View) leicht Mocks eingebaut. Dies war nicht der Fall für die Mocks beim Testen der Datenzugriffsschicht verwendet. Aber ich kann sagen, dass es war eindeutig die Mühe wert. In der Tat konzentriert sich die meisten der ‚Aufwand‘ wirklich mit einer wiederverwendbaren Lösung kommen, die die Arbeit minimiert, die ein Entwickler jede einzelne Mock zu tun hatte, zu schaffen. Ich würde empfehlen, die Zeit nehmen, zu graben und einen Ansatz für Ihre Situation zu entdecken, dass Sie Ihre GIS-Datenschicht leicht verspotten ermöglicht. Das - oder nur manuell jede Klasse verspotten. In beiden Fällen die Möglichkeit, die automatisierte Unit-Tests auszuführen, die auf die Mocks verlassen lohnt sich ...

Andere Tipps

In meiner Situation spottet Arbeit wirklich schön. Aber ich bin mit Python, die so dynamisch ist, dass es viele Dinge, die die Prüfung viel macht, viel einfacher.

In der Situation wie bei Ihnen, wenn der Anwendung in erster Linie ist datengesteuerte (soweit ich sehe), Mocks ist vielleicht nicht so nützlich sein. Nur Übergabe von Daten in und beobachten sie kommen sollte für die Prüfung ausreichen. Ich möchte nur sicherstellen, dass die Anwendung ist modularisierten genug , so kann dieser Ansatz angemessen kleine Bauteile angewendet werden.

Mocking kann in irgendeiner Art von Projekt nützlich sein. Aber manchmal spöttisch ist sehr zeitaufwendig und der ROI davon niedrig ist.

Der Versuch, Sharepoint zu testen, es scheint, dass spöttischen der einzige Weg ist, und nur Typemock lassen Sie verspotten versiegelte Klassen.

Mocking ist sehr ausführlich in meinem Fall verwendet. Mocks ist in der Regel für die Klassen, die externen Abhängigkeiten, zum Beispiel Netzwerk, Datenbank, Dateisystem. Jedes dieser Programme kann flakiness in den Tests einführen, wenn Mocks werden nicht verwendet.

Wenn die Mocks, die Sie teuer schreiben finden, denn es gibt eine Menge von gefälschten Daten zu füllen, einige vorausgefüllte Datenobjekte als Konstanten und sie oder leicht modifizierte Kopien in Ihrem Test verwenden einstellen könnten. Wenn eine solche Datenobjekte externe Abhängigkeiten hat, dann vielleicht Refactoring es in einer Art und Weise können Sie die beiden Anliegen trennen.

Es ist eine Initiative von Dave Bouman begann eine Gemeindebibliothek von Mocks für den Einsatz in ArcObjects bezogenen Unit-Tests, um zu versuchen und zu bauen. Sein Blog und der SVN-Repository haben große Informationen im Zusammenhang mit Unit-Tests GIS-Systemen

http://blog.davebouwman.net/CategoryView,category,Unit % 2BTesting.aspx

http://svn2.assembla.com/svn/arcdeveloper/TestingUtilities/ trunk /

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