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