J'essaye de tester unitaire un moteur de gestion d'hôte WCF que j'ai écrit. Le moteur crée essentiellement des instances ServiceHost à la volée en fonction de la configuration. Cela nous permet de reconfigurer dynamiquement les services disponibles sans avoir à tous les arrêter et à les redémarrer chaque fois qu'un nouveau service est ajouté ou un ancien est supprimé.
Cependant, j'ai rencontré une difficulté lors des tests unitaires de ce moteur de gestion d'hôte en raison du fonctionnement de ServiceHost. Si un ServiceHost a déjà été créé, ouvert et pas encore fermé pour un point de terminaison particulier, un autre ServiceHost pour le même point de terminaison ne peut pas être créé, ce qui entraîne une exception. En raison du fait que les plates-formes de test unitaire modernes parallélisent leur exécution de test, je n'ai aucun moyen efficace de tester unité ce morceau de code.
J'ai utilisé xUnit.NET, en espérant qu'en raison de son extensibilité, je pourrais trouver un moyen de le forcer à exécuter les tests en série. Cependant, je n'ai pas eu de chance. J'espère que quelqu'un ici sur SO a rencontré un problème similaire et sait comment faire exécuter des tests unitaires en série.
REMARQUE: ServiceHost est une classe WCF, écrite par Microsoft. Je n'ai pas la capacité de changer son comportement. Héberger chaque point de terminaison de service une seule fois est également le bon comportement ... cependant, ce n'est pas particulièrement propice aux tests unitaires.