Próbuję przetestować jednostkę do aparatu zarządzania hostami WCF, który napisałem. Silnik zasadniczo tworzy wystąpienia ServiceHost w locie na podstawie konfiguracji. Dzięki temu możemy dynamicznie zmieniać konfigurację dostępnych usług bez konieczności wyłączania ich wszystkich i ponownego uruchamiania za każdym razem, gdy dodawana jest nowa usługa lub usuwana jest stara.
Mam jednak trudności z testowaniem jednostkowym tego silnika zarządzania hostem ze względu na sposób działania ServiceHost. Jeśli ServiceHost został już utworzony, otwarty i jeszcze nie zamknięty dla określonego punktu końcowego, nie można utworzyć innego ServiceHost dla tego samego punktu końcowego, co powoduje wyjątek. Ze względu na fakt, że nowoczesne platformy testów jednostkowych równolegle wykonują swoje testy, nie mam skutecznego sposobu na testowanie jednostkowe tego fragmentu kodu.
Korzystałem z xUnit.NET, mając nadzieję, że ze względu na jego rozszerzalność uda mi się znaleźć sposób, aby zmusić go do seryjnego uruchamiania testów. Jednak nie miałem szczęścia. Mam nadzieję, że ktoś tutaj na SO napotkał podobny problem i wie, jak sprawić, aby testy jednostkowe były uruchamiane seryjnie.
UWAGA: ServiceHost to klasa WCF napisana przez firmę Microsoft. Nie mam możliwości zmiany tego zachowania. Hostowanie każdego punktu końcowego usługi tylko raz jest również właściwym zachowaniem ... jednak nie jest szczególnie sprzyjające testom jednostkowym.