2009-03-06 9 views
39

Ich habe dieses Tool, das Microsoft mit Visual Studio verwendet, weil es mitWie können WCF-Dienste am besten getestet werden?

http://msdn.microsoft.com/en-us/library/bb552364.aspx

Aber es ist irgendwie klobig und schwer zu arbeiten schnell und schmutzig ist. Gibt es noch andere nützliche Testclients, die Sie verwenden und kein neues Visual Studio-Projekt erstellen und Code kompilieren müssen?

EDIT: Ich suche mehr nach einem grafischen Test-Tool, mit dem ich schnelle Ad-hoc-Tests von Systemen in unseren verschiedenen Umgebungen durchführen kann, ohne eine Reihe verschiedener Tests schreiben zu müssen.

Antwort

16

SoapUI ist ein weiteres Tool zum Testen von Webservices. Ich kann es nur wärmstens empfehlen.

+0

Ich bin für mehr als nur Web-Services suchen, sind wir – Nick

+0

Fügen Sie einfach einen zusätzlichen Endpunkt Basichttpbinding zu Ihren Diensten und ihn an SoapUI viel net.tcp Bindungen in WCF. –

+2

das würde nicht testen, die netTcpBindings wir haben, was der ganze Zweck ist – Nick

8

Sie werden kein besseres Tool zum Erstellen automatisierter Tests von WCF-Diensten finden, als Ihr bevorzugtes Unit-Test-Framework zu verwenden und Tests zu schreiben. Der Testclient oder die soapUI erstellt einen Test, der in einem Continuous Integration-Szenario ausgeführt werden kann.

+7

@John, ich benutze SoapUI in der kontinuierlichen Integration baut jeden Tag: http://www.soapui.org/userguide/commandline/functional.html –

+1

Vielen Dank für das Posten. Wenn Sie jUnit zum Testen von WCF-Diensten verwenden, sollten Sie das irgendwo bloggen. Die meisten Leute würden Java nicht zum Testen von .NET-Code verwenden. –

+2

Ich habe nicht erwähnt, dass ich JUnit benutze. Mit SoapUI können Sie Webtests schreiben und Erwartungen definieren. Diese Tests können in der Befehlszeile ausgeführt werden, und die Ergebnisse werden in eine Standardtextdatei geschrieben, die während des Builds interpretiert werden kann. –

1

Nun, ich schreibe Unit Tests im MS-Test. Vor jedem Test wird der Service von der Testbaugruppe gehostet und anschließend abgerissen. Sicher, es ist kein Komponententest, also werden Puristen erschaudern, aber das bedeutet, dass ich Tests so oft ausführen kann, wie ich möchte.

+1

Zusammen mit herkömmlichen "Service-Unit-Tests", die die Service-Interfaces direkt aufrufen und die Domain-Ebene mokieren, haben wir auch "Service-Self-Host-Tests", die den Service im Unit-Test-Framework hosten, aber auch die Domain-Ebene mockten. Dies ist eine Mischung aus Integrationstests und Komponententests - aber sie beweisen, dass unser Marshalling und die Serialisierung richtig funktionieren, was sonst schwierig umzusetzen ist. –

0

Wenn Sie die Clientlogik testen müssen: Sie können das Mocking/Isolation-Framework verwenden, um die tatsächlichen Aufrufe an den Server zu stubeln und ein Komponententestframework zu verwenden, um richtige Komponententests zu schreiben.

Testen der Server-Logik kann noch einfacher sein - alles, was Sie brauchen, ist den Aufruf der Business-Logik und stub Aufrufe an externe Komponenten (d. H. Datenbank) zu testen.

Es gibt keinen tatsächlichen Vorteil der Einheit, die die volle Interaktion zwischen dem Client und dem Server testet, da Sie wissen, dass WCF stattdessen Integrationstests für die gesamte Umgebung auf dedizierten Servern/Clients ausführt.

+0

Es gibt Vorteile in einer TDD-Umgebung, und Sie ändern Ihre Bindungen –

+0

so gibt es Test Client-Logik (Proxy) und Testen des Dienstes selbst, die Methoden, die Business-Layer-Methoden richtig nennen? Sie brauchen also wirklich 2 Sets und Kinder von Tests hier für einen Service. – PositiveGuy

1

Ich wollte damit nicht implizieren, dass soapUI nicht für einen WCF-Dienst funktioniert, der mit basicHttpBinding verfügbar gemacht wird. Die Verwendung von basicHttpBinding würde funktionieren, da der Dienst als legaxy ASMX-Webdienst funktionieren würde. Wenn man jedoch die Bindung (oder mehrere Bindings) zum Beispiel auf netTcpBinding umstellt, denke ich, dass es immer noch nicht möglich wäre, die Methoden dieses Dienstes mit soapUI aufzurufen. Das Szenario, das ich beschreibe, ist ziemlich üblich, bei dem Sie einen WCF-Dienst im Web mit dem BasicHttpBinding-Endpunkt für maximale Interoperabilität und einen anderen Endpunkt als netTcpBinding (für maximale Leistung), der nur intern verwendet wird, verfügbar machen.

1

Es gibt diesen neuen Test-Client namens SOA Cleaner, ich empfehle Ihnen, es zu versuchen. Es unterstützt WCF. finden Sie unter: http://xyrow.com.

+0

Können Sie mehr dazu sagen? Was ist daran gut? Was ist schlecht? –

+0

Es ist eine .NET-Anwendung. Es ist sehr einfach und leichtgewichtig; deos brauchen keine Installation. – Clangon

1

Ich lief WcfStorm mit seinem 15-Tage-Eval und ich bin beeindruckt. Stellen Sie eine Verbindung mit dem Dienst her, und alle Methoden werden verfügbar gemacht. Klicken Sie auf eine Methode und Sie können mehrere Testfälle erstellen. Nachdem Sie fertig sind, können Sie diese Tests speichern (ich werde meine als eine Lösungsdatei mit dem Service behalten) und wenn Sie Änderungen vornehmen, können Sie alle Tests durchführen, die kontinuierlichen Tests genügen. Es verfügt auch über eine Befehlszeile, die es Ihnen ermöglichen sollte, sich für echte kontinuierliche Tests in Ihre Build-Maschine zu integrieren.

Es unterstützt auch IronPython, so dass Sie in der Lage sein können, das Entfernen von Datensätzen zu scripten, die Ihr Test hinzugefügt hat, wenn Sie mit dieser Skriptsprache gut umgehen können.

0

Erstaunliche WCFStorm, aber ich denke, ist zu teuer für einen unabhängigen Entwickler.

Wie Darin sagte, empfehle ich auch soapUI.

Es gibt jedoch einen Sonderfall, dass soapUI keine JSON-Anforderung unterstützt, wenn Sie REST in WCF verwenden und die Anforderung als POST-Nachricht senden.

In diesem Fall können Sie ein Tool verwenden, die ich hier gefunden:

WCF RESTful JSON automated testing

+0

Können Sie genauer sein, was der Spezialfall ist? –

5

WCFStorm nützlich ist, um die Möglichkeit zu testen, die Sie beschreiben.

Verwandte Themen