Ich versuche, eine von mir geschriebene WCF-Host-Management-Engine zu testen. Die Engine erstellt ServiceHost-Instanzen grundsätzlich im laufenden Betrieb basierend auf der Konfiguration. Auf diese Weise können wir dynamisch neu konfigurieren, welche Dienste verfügbar sind, ohne alle herunterfahren und neu starten zu müssen, wenn ein neuer Dienst hinzugefügt oder ein alter entfernt wird.
Ich habe jedoch aufgrund der Funktionsweise von ServiceHost Schwierigkeiten beim Testen dieser Host-Management-Engine. Wenn für einen bestimmten Endpunkt bereits ein ServiceHost erstellt, geöffnet und noch nicht geschlossen wurde, kann kein anderer ServiceHost für denselben Endpunkt erstellt werden, was zu einer Ausnahme führt. Aufgrund der Tatsache, dass moderne Unit-Test-Plattformen ihre Testausführung parallelisieren, habe ich keine effektive Möglichkeit, diesen Code zu testen.
Ich habe xUnit.NET verwendet, in der Hoffnung, dass ich aufgrund seiner Erweiterbarkeit einen Weg finden könnte, es zu zwingen, die Tests seriell auszuführen. Ich hatte jedoch kein Glück. Ich hoffe, dass jemand hier auf SO auf ein ähnliches Problem gestoßen ist und weiß, wie Unit-Tests seriell ausgeführt werden können.
HINWEIS: ServiceHost ist eine WCF-Klasse, die von Microsoft geschrieben wurde. Ich habe nicht die Fähigkeit, sein Verhalten zu ändern. Das einmalige Hosten jedes Service-Endpunkts ist ebenfalls das richtige Verhalten. Es ist jedoch für Unit-Tests nicht besonders förderlich.
TestServer
im Docker auszuführen . Also musste ich die Integrationstests serialisieren.