У меня есть проект С# unit test с настройками приложения в файле app.config
. Я тестирую класс, который существует в другом проекте. Этот класс зависит от обоих: ConfigurationManager.AppSettings
и ConfigurationManager.ConnectionStrings
.
В проекте, в котором находится тестируемый класс, нет файла app.config. Я бы подумал, что, поскольку класс создается в контексте проекта unit test, он будет использовать файл app.config проекта unit test. Действительно, это похоже на строку соединения.
Класс возвращает строку соединения без каких-либо проблем. Однако, когда класс пытается получить какие-либо параметры приложения, менеджер конфигурации всегда возвращает null
. Что здесь происходит?
Изменить 1
Я подумал, что было бы неплохо попробовать загрузить некоторые настройки в тестовом проекте, чтобы узнать, что произойдет. Я попытался загрузить параметр в unit test непосредственно перед вызовом кода, который создает экземпляр класса во внешнем проекте. Тот же результат, ничего. Наверное, я могу исключить другой проект из уравнения на данный момент.
Вот выдержка из моего файла конфигурации:
<configSections>
<sectionGroup name="applicationSettings"
type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="MyNamespace.Properties.Settings"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
requirePermission="false" />
</sectionGroup>
</configSections>
...
<applicationSettings>
<MyNamespace.Properties.Settings>
<setting name="Bing_Key"
serializeAs="String">
<value>...</value>
</setting>
</MyNamespace.Properties.Settings>
</applicationSettings>
и вот как я пытаюсь загрузить настройку:
string test = System.Configuration.ConfigurationManager.AppSettings["Bing_Key"];