C#:使用不同的配置文件运行每个单元测试

时间:2013-11-14 06:35:32

标签: c# unit-testing

我目前正在开发一个可在任何应用程序中使用的插件,插件的配置是通过使用web.config或app.config文件完成的。

现在,我想对我的插件进行单元测试。我想在各种条件下测试不同的行为:

例如:

  1. 只有1个单项应标记为'默认'。
  2. 可以在插件中注册提供程序集合,但名称必须唯一,否则会引发特定异常。
  3. 我的问题:

    我有一个单元测试项目,我想用另一个应用程序配置文件测试每个方法,这可能吗?

    我已尝试从ExeConfiguration中读取该文件,但我无法让它工作。

    感谢您的反馈。

    氪,

2 个答案:

答案 0 :(得分:3)

这就是我们所做的(与@THG相同)在他的回答中解释。

public interface IConfiguration
{
    string SettingA { get; }


    string SettingB { get; }
}


public class Configuration : IConfiguration
{

    public string SettingA
    {
        get
        {
            return ConfigurationManager.AppSettings["SettingA"];
        }
    }

    public string SettingB
    {
        get
        {
            return ConfigurationManager.AppSettings["SettingB"];
        }
    }
}

然后在你的测试中

    var config = MockRepository.GenerateStub<IConfiguration>();
    config.Stub(x => x.SettingA).Return("Fred");

答案 1 :(得分:2)

我的建议是模拟与配置文件的集成,而不是直接使用它。这种方法提供了更大的灵活性,无需担心多个配置文件。 您可以使用模拟框架,也可以在获取配置值的代码之上创建自己的抽象层。