MSTEST в C# с использованием Simple Injector DI для класса с использованием Орлеана
Я буду признателен за вашу помощь в следующем вопросе. Я извиняюсь за длину, но это беспокоит меня в течение некоторого времени, и я хочу объяснить себя, как могу.
Мне нужно проверить класс. Класс имеет некоторую бизнес-логику и использует Орлеан. У меня есть несколько тестовых сценариев, которые я хочу реализовать сам, и некоторые из них будут реализованы другими в будущем, когда класс будет расширен. Я тестирую класс с помощью тестового кластера Орлеана на локальной машине, и я использую несколько макетов. Тесты проводятся MStest 2.
Если я правильно понимаю, регистрировать макеты, разрешать их, а затем отменять их регистрацию и регистрировать новое поведение - это нехорошо. Это также отключается Simple Injector и другими контейнерами DI, блокируя контейнер.
Итак, я должен зарегистрировать все поведение макета сразу, прежде чем развернуть тестовый кластер. Так что теперь мой макет возвращает разные результаты, основанные на каком-то произвольном идентификаторе теста, который я передаю как аргумент Тиа не подлежит обслуживанию, и если кто-то хочет добавить новый тест, он должен понять какую-то произвольную систему, которую я использую для идентификации сценария теста в макете.
Кроме того, теперь у меня есть некоторый метод тестирования, который зависит от метода установки, который я запускал в ClassInitialize. Поэтому, если кто-то хочет добавить новый тест, он должен добавить в код 2 новых метода: один для настройки и один для реального тестирования. Это также создает дублирование имен, так как метод тестирования и метод настройки имеют схожие имена. Это делает код еще сложнее поддерживать.
Кроме того, поскольку требуется некоторый обмен данными между методом настройки тестового сценария и его методом тестирования, мне нужно использовать несколько статических переменных.
Интуитивно, я думаю, у меня есть неправильное направление в этом, и это есть другой путь.
Не могли бы вы посоветовать, как сделать обслуживаемыми, расширяемыми, обучающими при использовании di, mocks (moq) и Orleans?
Спасибо