Мой код использует стороннюю библиотеку, которая использует шаблон синглтона глубоко внутри него.При первом доступе библиотека использует переменные среды Windows для определения папки конфигурации, из которой она загружена.
Однако я хочу запускать разные папки в разных наборах модульных тестов.В идеале я бы указывал папку конфигурации для каждого класса модульного теста или чего-то такого.
Сторонняя библиотека - это огромная объектная модель, и мой код - это просто набор методов расширения поверх них.Я не вижу простого способа макетирования всей библиотеки.
Можно ли как-нибудь создать новый домен приложения для каждого тестового класса?Я знаю, что в нагрузочных тестах есть настройка для создания доменов между запущенными тестовыми сборками.В моем случае это было бы много сборок, и я не совсем уверен, можно ли / как установить этот параметр на модульном тестовом тестере.
В качестве альтернативы, я рассматриваю возможность покупки либо Typemock Isolator, либо JustMock, чтобы яможет заставить синглтон возвращать «ноль», в результате чего сторонняя библиотека загружает новую.Я посмотрел на декомпилированный код, и оказалось, что он может достичь желаемого результата.Конечно, там может быть скрыто больше «вкусностей».
Это надуманные подходы.Что я действительно хотел бы, так это «очистить» весь домен приложения между тестами, классами тестов или тестовыми сборками.
Я готов пожертвовать скоростью, когда автоматизированные тесты должны переключать папки конфигурации.Цикл красный-зеленый-рефактор, вероятно, не будет включать в себя несколько папок конфигурации.
Любые предложения о том, как этого добиться?
РЕДАКТИРОВАТЬ Я только что обнаружил, что различные тестовые сборки приводят к удалению синглетонов.Следовательно, можно организовать тестовые сборки в соответствии с конфигурацией, в которой они выполняются, а не по зависимости или проблемной области, на которые ориентированы тесты.