Я пытаюсь использовать unit test механизм управления хостом WCF, который я написал. Двигатель в основном создает экземпляры ServiceHost "на лету" на основе конфигурации. Это позволяет нам динамически перенастраивать, какие сервисы доступны, не принося их всех и перезапускать при каждом добавлении новой службы или удалении старого.
Я столкнулся с трудностями в модульном тестировании этого механизма управления хостом, однако, из-за того, как работает ServiceHost. Если ServiceHost уже создан, открыт и еще не закрыт для конкретной конечной точки, другой ServiceHost для одной и той же конечной точки не может быть создан, что приведет к исключению. Из-за того, что современные платформы тестирования модулей распараллеливают выполнение своих тестов, у меня нет эффективного способа unit test этого фрагмента кода.
Я использовал xUnit.NET, надеясь, что из-за его расширяемости я мог бы найти способ заставить его запускать тесты поочередно. Однако мне не повезло. Я надеюсь, что кто-то здесь, на SO, столкнулся с подобной проблемой и знает, как получить модульные тесты для серийного запуска.
ПРИМЕЧАНИЕ: ServiceHost - это класс WCF, написанный Microsoft. У меня нет возможности изменить его поведение. Хостинг каждой конечной точки обслуживания только один раз также является правильным поведением... однако, это не особенно способствует единичному тестированию.