如何在单元测试期间在web.config和类库之间共享设置?

时间:2017-08-18 05:47:40

标签: asp.net asp.net-mvc unit-testing configuration web-config

我想在类库中进行单元测试,在那里我需要与我的主asp.net项目的web.config中相同的配置设置。因此,我需要将一些web.config设置复制到我的类库中。

我已通过类库的项目属性“设置”选项卡添加了设置。

然后app.config文件自动添加到项目中:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="ExternalServices.CPR.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <applicationSettings>
        <ExternalServices.CPR.Properties.Settings>
            <setting name="CprProdHostName" serializeAs="String">
                <value>direkte.cpr.dk</value>
            </setting>

问题1.将主web.config中的某些设置共享/复制到需要单独运行单元测试但具有相同配置的类库的“最佳实践”方法是什么?

问题2.我想按名称阅读设置。 我尝试使用ConfigurationManager.AppSettings [“CprProdHostName”]读取; (使用System.Configuration;)但它不起作用,只返回null?

问题3. app.config文件的目的是什么?由于没有构建动作集并且文件未复制到输出,因此默认情况下它永远不会在任何位置可见。这意味着我无法在运行时更改这些设置。那很奇怪,对吗?

1 个答案:

答案 0 :(得分:0)

希望您在谈论如下的网络配置设置:

<configuration>
  <appSettings>
    <add key="HostName" value="www.hostname.com" />
  </appSettings>
</configuration>

请检查上面的部分,然后使用下面的代码检索HostName的键值

ConfigurationManager.AppSettings["HostName"]

还需要using System.Configuration;