如何模拟C#应用程序的配置

时间:2016-03-30 14:12:32

标签: c# unit-testing configuration app-config

我写了一个C#应用程序,想要模拟配置值。 例如,我在远程计算机上配置文件创建路径,并希望在测试时在本地创建它。

我想为为实现和接口的配置创建一个包装类,使用这种方法可以模拟接口并返回模拟值。

public interface IConfigurationProvider
{
   string GetFileOutputPath(string path);
}

public class ConfigurationWrapper : IConfigurationProvider
{
    return ConfigurationManager.AppSettings.Get("FileOutputPath");
}

配置:

<configuration>
    <appSettings>
        <add key="FileOutputPath" value="RemoteServerPath" />
    </appSettings>
</configuration>

这种方法确实可以完成这项工作,但对于这种情况,这是最佳做法吗?

1 个答案:

答案 0 :(得分:1)

就最佳做法而言,这将是一个意见问题。在清洁,可测试,可维护的代码方面,通常使用该方法。

以下是您的方法的变体。 (基本上提供相同的功能)

using System.Configuration;

public interface IApplicationSettings {
    string this[string setting] { get; }
}

public class ConfigAppSettings : IApplicationSettings {
    public string this[string setting] {
        get { return ConfigurationManager.AppSettings[setting]; }
    }
}

public interface IConnectionStrings {
    string this[string name] { get; }
}

public class ConfigConnectionStrings : IConnectionStrings {
    public string this[string name] {
        get { return ConfigurationManager.ConnectionStrings[name].ConnectionString; }
    }
}