通过从测试中读取App.config来简化测试配置

时间:2013-12-02 11:49:22

标签: c#

我的应用程序允许用户在App.config中指定他们在输出中需要的列:

<?xml version="1.0"?>
  <configuration>
    <appSettings>

  .
  .
  .
  <!-- specify columns you want -->
  <add key="NameCol" value="true"/>
  <add key="AddressCol" value="true"/>
  <add key="TelCol" value="true"/>
  .
  .
  .
 </appSettings>

我有一个单独的项目来测试我的应用程序。在测试中,我更改了各种列设置,并在每次测试后使用以下代码清除设置:

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// set config options here

// now clear config options
config.AppSettings.Settings.Remove("NameCol");
config.AppSettings.Settings.Remove("AddressCol");
config.AppSettings.Settings.Remove("TelCol");  

有没有办法从App.config文件中读取列名并为上面的for循环?所以它会是这样的。 getColNamesFromAppConfig()看起来像什么?

columnNames = getColNamesFromAppConfig()
foreach (string colName in ColumnNames)
{
  config.AppSettings.Settings.Remove(colName);
}

1 个答案:

答案 0 :(得分:2)

怎么样:

    foreach (SettingsProperty property in Settings.Properties) // or ConfigurationProperty? 
    {
        // ...
    }

PS。顺便说一下,如果我是你,我会考虑在自定义对象中包装设置(由你自己实现)。如果你必须这样做:

config.AppSettings.Settings.Remove("NameCol");
config.AppSettings.Settings.Remove("AddressCol");
config.AppSettings.Settings.Remove("TelCol");  

在测试中,这对我来说是一种代码味道。我相信你应该可以模拟设置以进行测试。然而,这是一个品味问题。