代码之家  ›  专栏  ›  技术社区  ›  Martin Liversage

修改单元测试中的应用程序设置

  •  12
  • Martin Liversage  · 技术社区  · 14 年前

    我有一个类库,我想使用Microsoft单元测试框架进行单元测试。我要测试的一些类是使用应用程序设置配置的。这些设置在 Settings.settings 具有应用范围和适当默认值的文件。当应用程序使用库时,可以在 App.Config 文件。如果不是,则使用默认值。这正是我想要的。

    在我的一些测试案例中,我想测试设置值的特殊组合,但是我不知道如何从单元测试代码中更改被测试类看到的值。这些设置将始终从代码生成类的属性中加载其默认值。

    在我的库类中,我访问如下设置:

    var mySetting1 = Settings.Default.MySetting1;
    var mySetting2 = Settings.Default.MySetting2;
    

    在被测试的类访问设置之前,如何在单元测试中修改这些设置?使单元测试可以访问内部设置类并不能解决问题,因为这些设置具有应用程序范围,并且是设置类上的只读属性。

    2 回复  |  直到 9 年前
        1
  •  16
  •   Martin Liversage    9 年前

    ApplicationSettingsBase

    [assembly: InternalsVisibleTo("UnitTestAssemblyName")] AssemblyInfo.cs

    Reload()

    Settings.Default.Reload();
    var dummy = Settings.Default.MySetting1;
    

    Settings.Default.PropertyValues["MyStringSetting1"].PropertyValue = "Foobar";
    Settings.Default.PropertyValues["MyDoubleSetting2"].PropertyValue = 3.1416D;
    
        2
  •  5
  •   Dave D    14 年前

    Settings

    internal sealed partial class Settings : IMySettings {
    
        /*
         * here be auto-generate code (and dragons!)
         */
    }
    
    internal interface IMySettings
    {
        string ApplicationSetting
        {
            get;
        }
    
        string UserSetting
        {
            get;
            set;
        }
    }