Я намагаюся модульно протестувати написаний мною механізм управління хостом WCF. В основному движок створює екземпляри ServiceHost на льоту на основі конфігурації. Це дозволяє нам динамічно переналаштовувати, які служби доступні, без необхідності збивати їх усі та перезапускати, коли додається нова послуга або видаляється стара.
Я зіткнувся з труднощами при модульному тестуванні цього механізму управління хостом, однак, через те, як працює ServiceHost. Якщо ServiceHost уже створений, відкритий і ще не закритий для певної кінцевої точки, не можна створити інший ServiceHost для тієї самої кінцевої точки, що спричиняє виняток. Через те, що сучасні платформи модульного тестування паралельно виконують тестування, я не маю ефективного способу модульного тестування цього фрагмента коду.
Я використовував xUnit.NET, сподіваючись, що через його розширюваність я зможу знайти спосіб змусити його запускати тести послідовно. Однак мені не пощастило. Я сподіваюся, що хтось тут, на SO, зіткнувся з подібною проблемою і знає, як отримати модульні тести для запуску послідовно.
ПРИМІТКА. ServiceHost - це клас WCF, написаний Microsoft. У мене немає можливості змінити свою поведінку. Хостинг кожної кінцевої точки служби лише один раз - це також правильна поведінка ... однак, це не особливо сприяє модульному тестуванню.