NameValueCollection到ConfigurationSection

时间:2019-02-07 11:43:19

标签: c# unit-testing nunit system.configuration

在我的项目中,我有一个App.config,其中存储了所有配置。我已经使用了几个部分来拥有一个干净且可读的App.config文件。每个部分都处理一个特定的控制器。这是我文件中内容的一个示例:

<configuration>
  <configSections>
    <section name="applicationConfiguration" type="System.Configuration.NameValueSectionHandler" />
    <section name="databaseConfiguration" type="System.Configuration.NameValueSectionHandler" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
  </startup>

  <ApplicationConfiguration/>

  <DatabaseConfiguration>
    <add key="UserID" value="user"/>
    <add key="Password" value="pwd"/>
  </DatabaseConfiguration>

</configuration>

它在我的项目中运行良好,但问题出在project.test上。我尝试在测试项目中复制app.config(并且在属性中选择“始终复制”),但它并没有改变。 App.config文件存在于测试项目的Bin / Debug中,但对于测试而言,它不存在。

所以我试图在App.config中动态添加元素。通过配置管理器将新密钥添加到AppSettings部分中,它可以很好地工作:

ConfigurationManager.AppSettings.Set("UserID ", " user ");

但是当我想使用section时,我陷入了困境;我无法即时将部分添加到ConfigurationManager。这是我的位置:

System.Configuration.Configuration tempConfig = (System.Configuration.Configuration) ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                dbConfig = new NameValueCollection();
                dbConfig.Add("UserID ", "user");
                dbConfig.Add("Password ", "pwd");
                tempConfig.Sections.Add("DatabaseConfiguration ", (ConfigurationSection) dbConfig);

你们对解决这个问题有任何想法吗?

谢谢!

0 个答案:

没有答案