我想知道如何加载配置,以便它在测试项目和应用程序运行时都能工作

I would like to know how to load config so it would work both in test project and during application runtime

我想封装AppConfig,所以我准备了class这样的:

static AppConfig()
{
    var exePath = Assembly.GetExecutingAssembly().Location;
    _config = ConfigurationManager.OpenExeConfiguration(exePath);
}

我这样做是为了有保存的可能性并且可以像这样添加新设置:

public static void SetSettings(string key, object value)
{
    if (_config.AppSettings.Settings.AllKeys.Contains(key))
    {
        _config.AppSettings.Settings[key].Value = value.ToString();
    }
    else
    {
        _config.AppSettings.Settings.Add(key, value.ToString());
    }
}

public static string GetSettings(string key, string defaultValue = "")
{
    if (_config.AppSettings.Settings.AllKeys.Contains(key))
    {
        return _config.AppSettings.Settings[key].Value;
    }
    return defaultValue;
}

public static void Save()
{
    _config.Save(ConfigurationSaveMode.Modified);
}

不幸的是,在测试中使用此类 AppCofing 不会加载它。

想知道如何加载配置,以便它在测试项目和应用程序运行时都能正常工作。

单元测试不应从外部配置文件中读取。读出的值应该依赖于使用它们的任何东西,因此您的测试可以通过构造函数、方法、属性 等提供您需要的值。

如果您想对配置文件中值的获取和设置进行单元测试,那么这可能不值得测试,因为那是框架代码。