Я пытаюсь закончить этот обработчик исключений:
if (ConfigurationManager.ConnectionStrings["ConnectionString"]==null)
{
string pathOfActiveConfigFile = ...?
throw new ConfigurationErrorsException(
"You either forgot to set the connection string, or " +
"you're using a unit test framework that looks for "+
"the config file in strange places, update this file : "
+ pathOfActiveConfigFile);
}
Эта проблема, кажется, только со мной, когда я использую nUnit.
c#
.net
nunit
app-config
configurationmanager
MatthewMartin
источник
источник
Строго говоря, нет единого файла конфигурации. За исключением ASP.NET 1, может быть три файла конфигурации, использующих
System.Configuration
поддержку inbuilt ( ). В дополнение к конфигурации машины:app.exe.config
пользовательский роуминг и локальный пользователь.Чтобы получить «глобальную» конфигурацию ( exe .config):
Используйте разные
ConfigurationUserLevel
значения для пользовательских конфигурационных файлов в роуминге и без роуминга.1 Который имеет совершенно другую модель, в которой содержимое дочерних папок (IIS-виртуальная или файловая система)
web.config
может (в зависимости от настроек) добавлять или переопределять родительскиеweb.config
.источник
Если вы имеете в виду, что вы получаете нулевой возврат только при использовании NUnit, то вам, вероятно, нужно скопировать значение ConnectionString ваш app.config вашего приложения в app.config вашей тестовой библиотеки.
Когда он запускается загрузчиком тестов, тестовая сборка загружается во время выполнения и просматривает собственный app.config (переименованный в testAssembly.dll.config во время компиляции), а не файл конфигурации ваших приложений.
Чтобы узнать местоположение сборки, на которой вы работаете, попробуйте
источник
Убедитесь, что вы щелкнули свойства файла и задали для него значение «всегда копировать», иначе его не будет в папке Debug \ с вашими счастливыми папками, чтобы настроить, где он должен быть, и добавить еще один «колокольчик».
источник
В первый раз, когда я понял, что проект модульного тестирования ссылается на app.config в этом проекте, а не на app.config, связанный с моим проектом производственного кода (конечно, DOH), я просто добавил строку в событие после сборки проекта Prod это скопирует app.config в папку bin тестового проекта.
Задача решена
До сих пор я не заметил каких-либо странных побочных эффектов, но я не уверен, что это правильное решение, но, по крайней мере, оно работает.
источник
Здесь отсутствует еще одна опция, которую я видел:
источник
В зависимости от расположения вашего конфигурационного файла
System.Reflection.Assembly.GetExecutingAssembly().Location
может быть сделано то, что вам нужно.источник
Я попробовал один из предыдущих ответов в веб-приложении (на самом деле веб-роль Azure работает локально), и он не совсем сработал. Тем не менее, этот похожий подход сработал:
Конфигурационный файл оказался в C: \ Program Files \ IIS Express \ MyComponent.dll.config. Интересное место для этого.
источник