Frage

Ich habe eine Anwendung, die Nachrichten an einen externen Webdienst sendet.Ich erstelle und stelle diese Anwendung bereit mit MSBuild Und Cruisecontrol.NET.Während CCNET die App erstellt und bereitstellt, führt es auch eine Reihe von Tests durch NUnit.Ich möchte nun auch die Webservice-Kommunikation testen.

Meine Idee ist, dass als Teil des Build-Prozesses ein Webdienst generiert werden sollte (basierend auf der WSDL der externen Webdienste) und auf dem lokalen Webserver des Build-Servers bereitgestellt werden sollte.Der Webdienst sollte lediglich die Nachricht empfangen und im Dateisystem ablegen, damit ich sie dann beispielsweise mit normalem NUnit überprüfen kann.Dies würde auch die Entwicklung erleichtern, da neue Entwickler nur das Build-Skript ausführen und betriebsbereit sein müssten (keine Zeit für die Einrichtung einer Verbindung zum Drittanbieterdienst aufwenden müssten).

Sind da irgendwelche vorhandene Versorgungsunternehmen da draußen das leicht einen Webdienst basierend auf einer WSDL verspotten?Irgendjemand etwas Ähnliches mit MSBuild gemacht?

Gibt es Gibt es andere Möglichkeiten, dieses Szenario zu testen?

War es hilfreich?

Lösung

Ich habe gerade angefangen, mich damit zu befassen http://www.soapui.org/ und es scheint, als würde es gut zum Testen von Webdiensten funktionieren.

Erwägen Sie möglicherweise auch das Hinzufügen einer Abstraktionsschicht in Ihrem Webdienst. Jeder Dienstaufruf würde dann direkt eine testbare Methode aufrufen (außerhalb des Webbereichs)?Ich habe das gerade mit einem größeren Projekt gemacht, an dem ich arbeite, und die Testbarkeit funktioniert gut.

Andere Tipps

Im Allgemeinen ist die Verwendung eine sehr gute Möglichkeit, solche Dinge zu testen Scheinobjekte.

Bei der Arbeit verwenden wir das Produkt TypeMock um Dinge wie die Webdienstkommunikation und andere externe Abhängigkeiten zu testen.Es kostet Geld, daher ist es vielleicht nicht für Ihre Bedürfnisse geeignet, aber ich denke, es ist ein fantastisches Produkt.Ich kann Ihnen aus eigener Erfahrung sagen, dass es sich sehr gut in NUnit und CCNet integriert.

Es hat eine wirklich einfache Syntax, in der Sie im Grunde sagen: "Wenn diese Methode/Eigenschaft aufgerufen wird, möchte ich, dass Sie diesen Wert stattdessen zurückgeben." Es ist großartig, Dinge wie Netzwerkfehler, nicht anwesende Dateien zu testen und natürlich Webdienste.

Schauen Sie mal rein NMock2.Es handelt sich um ein Open-Source-Spockprodukt, mit dem Sie „virtuelle“ Implementierungen für Schnittstellen erstellen können, die eine umfassende und umfassende Interaktion unterstützen.

Zum Beispiel, wenn Ihre WS-Schnittstelle aufgerufen wird IService und hat eine Data GetData() -Methode können Sie einen Mock erstellen, der einen einmaligen Aufruf der Methode erfordert und einen neuen zurückgibt Data Objekt:

var testService = mockery.NewMock<IService>();
Expect
    .Once
    .On(testService)
    .Method("GetService")
    .WithNoArguments()
    .Will(
        Return.Value(new Data());

Rufen Sie am Ende des Tests an mockery.VerifyAllExpectationsHaveBeenMet() um sicherzustellen, dass die GetData Methode wurde tatsächlich aufgerufen.

P.S.:Verwechseln Sie das „NMock2“-Projekt nicht mit dem „NMock RC2“, das auf SourceForge auch „nmock2“ genannt wird.NMock2-the-project scheint NMock abgelöst zu haben.

Das könnte auch etwas sein - Spottdrossel.Sehen nützlich aus.

An meinem Arbeitsplatz verwenden wir Typmock Und nEinheit für unsere Unit-Tests.

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