【问题标题】:How do I share settings between web.config and class library during unit testing?如何在单元测试期间在 web.config 和类库之间共享设置?
【发布时间】:2017-08-18 05:47:39
【问题描述】:

我想在类库中进行单元测试,我需要与我的主 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 文件的用途是什么?因为没有构建操作集并且文件没有复制到输出,所以默认情况下它永远不会在任何地方可见。这意味着我无法在运行时更改这些设置。这很奇怪,对吧?

【问题讨论】:

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


    【解决方案1】:

    希望您正在谈论如下 Web 配置设置:

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

    请检查上面的部分,然后使用下面的代码来检索主机名的键值

    ConfigurationManager.AppSettings["HostName"]
    

    还需要using System.Configuration;

    【讨论】:

    • 不,我不是在谈论 web.config。我在谈论标准项目属性 - 在“设置”选项卡上创建... Web 配置也是我感兴趣的,但由于它们在另一个项目中,一个 Web 项目,我决定将设置复制到这个项目的“设置”,如上所述。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多