代码之家  ›  专栏  ›  技术社区  ›  Yes - that Jake.

如何配置设置文件以使用单元测试?

  •  2
  • Yes - that Jake.  · 技术社区  · 17 年前

    我有一个库,我正在为它编写单元测试。该库由两个应用程序使用:一个是Windows服务,另一个是执行一些注册表读写的命令行应用程序。每个都有一个稍有不同的App.config文件,该文件在启动时从库中加载。例如:

        public RetentionService()
        {
            SettingHive = new Hive();
            TimingService = new RetentionTimingService(SettingHive);
    
            AppSettingsReader asr = new AppSettingsReader();
            object appsListObj = asr.GetValue(@"blocking-process-list", Type.GetType(@"System.String"));
            string appsList = appsListObj.ToString();
            _BlockingAppNames = RetentionService.ListFromList(appsList);
    
            string targetList = asr.GetValue(@"target-files", Type.GetType(@"System.String")).ToString();
            _TargetLogs = RetentionService.ListFromList(targetList);
        }
    

    有什么更好的方法可以做到这一点?我希望库从生产环境中每个应用程序的*.exe.config加载设置,但如果运行单元测试,则从第三个位置加载设置。

    3 回复  |  直到 17 年前
        1
  •  3
  •   ChrisLively    17 年前

    或者,只需将包含相关信息的app.config文件添加到单元测试项目中。

        2
  •  2
  •   Michael Meadows    17 年前

    如果单元测试是为了测试代码而设计的,那么就根本不依赖配置文件。从类中提取依赖项,并使用依赖项注入将数据注入。这样,就可以存根配置类。

    实际上,只要测试配置文件,就应该能够使用 ConfigurationManager ,尽管我不建议对配置数据进行单元测试。这是一个更好的烟雾测试候选人。

        3
  •  1
  •   Jeff Kotula    17 年前