Для простоты я обычно разбиваю большую часть своей конфигурации (то есть содержимое app.config и web.config) на отдельные файлы .config, а затем ссылаюсь на них из основного файла конфигурации с помощью атрибута configSource. Например:
<appSettings configSource="appSettings.config"/>
а затем поместите все пары ключ / значение в этот файл appSettings.config вместо того, чтобы иметь это в строке в основном файле конфигурации:
<appSettings>
<add key="FirstKey" value="FirstValue"/>
<add key="SecondKey" value="SecondValue"/>
...
</appSettings>
Обычно это отлично работает с самим приложением, но я сталкиваюсь с проблемами при попытке написать модульные тесты, которые по какой-либо причине должны получить какое-то значение из раздела конфигурации, который хранится в одном из этих внешних файлов. (Я понимаю, что большинство из них можно было бы рассматривать как «интеграционные тесты», поскольку они полагаются на систему конфигурации, и у меня также есть «чистые модульные тесты», но это не проблема. Я действительно ищу чтобы проверить, что эти значения конфигурации извлекаются правильно и влияют на поведение должным образом).
Из-за того, как MSTest компилирует и копирует выходные данные в запутанные папки, которые отличаются от каждого тестового запуска (а не в папку bin, как вы могли подумать), похоже, что он никогда не сможет найти эти внешние файлы во время тестов выполняются. Я пробовал возиться с действиями пост-сборки, чтобы заставить эту работу, но безуспешно. Есть ли способ скопировать эти внешние файлы в правильную папку вывода во время выполнения?