我有一个C#单元测试项目,其中的应用程序设置位于app.config
文件中。我正在测试一个存在于不同项目中的类。该班级取决于两个,ConfigurationManager.AppSettings
和ConfigurationManager.ConnectionStrings
。ConfigurationManager.AppSettings返回空单元测试项目
被测试的类所驻留的项目没有app.config文件。我会想,因为这个类正在单元测试项目的上下文中被实例化,所以它会使用单元测试项目的app.config文件。事实上,连接字符串似乎确实如此。
该类检索连接字符串没有任何问题。但是,当班级尝试检索任何应用程序设置时,配置管理器始终会返回null
。这里发生了什么?
编辑1
我想,也许这将是一个好主意,尝试在测试项目,看看会发生什么加载某些设置。我试图在调用实例化外部项目中的类的代码之前立即在单元测试中加载设置。同样的结果,没有。我想我可以暂时排除等式中的其他项目。
这里是我的配置文件的摘录:
<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"];
你检查的App.config文件的生成动作需要的内容和复制到输出目录设置需要“如果更新,则复制”。 –
这些东西都没有按照你描述的那样设置。改变它们并不能解决问题。 –
在你的'app.config'中,config部分的类型和命名空间是否与CM.AppSettings命名空间相匹配? – mxmissile