Estoy intentando realizar una prueba unitaria de un motor de administración de host WCF que he escrito. Básicamente, el motor crea instancias de ServiceHost sobre la marcha en función de la configuración. Esto nos permite reconfigurar dinámicamente qué servicios están disponibles sin tener que desactivarlos todos y reiniciarlos cada vez que se agrega un nuevo servicio o se elimina uno antiguo.
Sin embargo, me he encontrado con una dificultad en la prueba unitaria de este motor de administración de host debido a la forma en que funciona ServiceHost. Si ya se ha creado, abierto y no cerrado un ServiceHost para un punto final en particular, no se puede crear otro ServiceHost para el mismo punto final, lo que genera una excepción. Debido al hecho de que las plataformas modernas de pruebas unitarias paralelizan su ejecución de prueba, no tengo una forma efectiva de probar este código.
He usado xUnit.NET, esperando que debido a su extensibilidad, pueda encontrar una manera de forzarlo a ejecutar las pruebas en serie. Sin embargo, no he tenido suerte. Espero que alguien aquí en SO haya encontrado un problema similar y sepa cómo hacer que las pruebas unitarias se ejecuten en serie.
NOTA: ServiceHost es una clase WCF, escrita por Microsoft. No tengo la capacidad de cambiar su comportamiento. Alojar cada punto final de servicio solo una vez es también el comportamiento adecuado ... sin embargo, no es particularmente propicio para las pruebas unitarias.