2009-03-06 39 views
39

Użyłem tego narzędzia, że ​​Microsoft statki z visual studio, bo to szybkie i brudneJaki jest najlepszy sposób testowania usług WCF?

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

Ale to trochę niezgrabne i ciężko pracować. Czy istnieją inne przydatne klienty testowe, z których korzystasz i nie wymagają tworzenia nowego projektu studia wizualnego i kompilowania kodu?

EDYCJA: Szukam więcej graficznego narzędzia testowego, które można wykorzystać do przeprowadzenia szybkich testów ad-hoc systemów w różnych środowiskach bez konieczności pisania kilku różnych testów.

Odpowiedz

16

SoapUI to kolejne narzędzie do testowania serwisów internetowych. Gorąco go polecam.

+0

szukam więcej niż tylko usług internetowych, używamy dużo Net.TCP wiązań w WCF – Nick

+0

Wystarczy dodać dodatkowy punkt końcowy BasicHttpBinding do Państwa dyspozycji i karmić go SoapUI. –

+2

który nie testowałby netTcpBingings, który mamy, który jest cały cel – Nick

8

Nie znajdziesz lepszego narzędzia do tworzenia automatycznych testów serwisów WCF niż do korzystania z ulubionego systemu testów jednostkowych i pisania testów. Klient testowy lub soapUI utworzy test, który może działać w scenariuszu Continuous Integration.

+7

@John, używam SoapUI w ciągłych kompilacjach integracyjnych każdego dnia: http://www.soapui.org/userguide/commandline/functional.html –

+1

Dzięki za umieszczenie tego. Jeśli używasz jUnit do testowania usług WCF, powinieneś to gdzieś blogować. Większość ludzi nie używałaby Javy do testowania kodu .NET. –

+2

Nie wspomniałem, że używam JUnit. Dzięki SoapUI możesz pisać testy internetowe i definiować oczekiwania. Testy te można uruchomić w wierszu poleceń, a wyniki zostaną zapisane w standardowym pliku tekstowym, który można zinterpretować podczas kompilacji. –

1

Cóż, kończę na pisaniu testów jednostkowych w teście MS. Przed każdym testem usługa jest hostowana przez zespół testowy, a następnie zgrywana. Pewnie, że to nie testy jednostkowe, więc puryści dreszczą, ale to oznacza, że ​​mogę testować tak często, jak chcę.

+1

Wraz z konwencjonalnymi "testami jednostek serwisowych", które bezpośrednio wywołują interfejsy serwisowe, wyśmiewają warstwę domenową, mamy również "testy samodzielnych hostów", które hostują usługę w ramach testów jednostkowych, ale także wyśmiewają warstwę domeny. Są one mieszanką testów integracyjnych i testów jednostkowych, ale udowadniają, że nasze ładowanie i serializacja działa poprawnie, a co innego, co jest trudne do wykonania. –

0

Jeśli potrzebujesz przetestować logikę klienta: Możesz użyć szyderstwa/Izolacja ramy do stub rzeczywistych wywołań do serwera i użyć platformy testowania jednostkowego, aby napisać odpowiednie testy jednostek.

Testowanie logiki serwera może być jeszcze łatwiejsze - wystarczy przetestować wywołanie do logiki biznesowej i wywołania kodu pośredniczącego do komponentów zewnętrznych (tzn. Bazy danych).

Nie ma rzeczywistej korzyści z testowania przez jednostkę pełnej interakcji między klientem a serwerem, ponieważ wiadomo, że WCF działa zamiast tego dodaje testy integracyjne całego środowiska na dedykowanym serwerze/klientach.

+0

Istnieje korzyść w środowisku TDD i zmieniasz wiązania –

+0

, więc istnieje testowanie logiki klienta (proxy) i testowanie samej usługi, metody, które wywołują metody warstwy biznesowej w porządku? więc naprawdę potrzebujesz 2 zestawy i dzieci testów tutaj dla usługi. – PositiveGuy

1

Nie miałem zamiaru sugerować, że soapUI nie działa w przypadku usługi WCF ujawnionej przy użyciu basicHttpBinding. Użycie polecenia basicHttpBinding będzie działało, ponieważ usługa będzie działać jako legalna usługa sieciowa ASMX. Jeśli jednak chcesz przełączać wiązanie (lub używać wielu wiązań) na przykład na netTcpBinding, nie sądzę, aby nadal możliwe było wywoływanie metod tej usługi przy użyciu soapUI. Scenariusz, który opisuję, jest dość powszechny, gdy masz usługę WCF eksponowaną w Internecie przy użyciu punktu końcowego basicHttpBinding dla maksymalnej interoperacyjności, a inny punkt końcowy jako netTcpBinding (dla maksymalnej wydajności) jest używany tylko wewnętrznie.

1

Istnieje nowy klient testowy o nazwie SOA Cleaner, polecam wypróbować. Obsługuje WCF. można znaleźć pod adresem: http://xyrow.com.

+0

Czy możesz powiedzieć coś więcej na ten temat? Co jest w tym dobrego? Co jest złe? –

+0

Jest to aplikacja .NET. Jest bardzo prosty i lekki; deos nie wymaga żadnej instalacji. – Clangon

1

Uruchomiłem WcfStorm z jego 15-dniowym eval i jestem pod wrażeniem tego. Połącz się z usługą i wszystkie metody są ujawnione. Kliknij metodę i możesz zbudować wiele przypadków testowych. Po zakończeniu możesz zapisać te testy (zachowaj moje jako plik rozwiązania z usługą) i po wprowadzeniu zmian możesz uruchomić wszystkie testy, które spełniają ciągłe testy. Ma również linię poleceń, która powinna umożliwiać integrację z maszyną do kompilowania w celu ciągłego testowania.

Obsługuje także IronPython, więc możesz być w stanie skasować usuwanie rekordów, które dodałeś do testu, jeśli jesteś dobry w tym języku skryptowym.

0

Niesamowita funkcja WCFStorm, ale uważam, że jest zbyt kosztowna dla niezależnego programisty.

Jak powiedział Darin, ja również polecam soapUI.

Jest jednak specjalny przypadek, że soapUI nie powoduje żądania JSON przy korzystaniu z REST w WCF i wysyłania żądania jako komunikatu POST.

W tym przypadku można użyć narzędzia znalazłem tutaj:

WCF RESTful JSON automated testing

+0

Czy mógłbyś dokładniej określić, jaki jest szczególny przypadek? –

5

WCFStorm jest przydatna do testowania sposób opisujesz.

Powiązane problemy