在UnitTest中读取*.config文件的郁闷

简介:
-Visual Stuido 2005集成了Unit Test功能后,创建和管理Unit Test变得比原来简单多了,并且独立项目的Unit Test模块和代码不会再"残留"于我们的dll中。不过VS 2005 Unit Test运行方法的原理和其他的Unit Test框架一样,也是使用反射来实现的,这样就会造成代码中一些依赖于运行环境的参数获取不到。

    刚才做了一个方法的Unit Test,该方法依赖于Web.confing里面的一个定制参数,于是郁闷就来了。当我运行测试代码时,发现那个Config里面配置参数总是为null。本来这个问题应该一点都不复杂,可是当我查看程序编译时的输出信息时,发现如下的一个Warning:
'System.Configuration.ConfigurationSettings.AppSettings' is obsolete: 'This method is obsolete, it has been replaced by System.Configuration!System.Configuration.ConfigurationManager.AppSettings'

    本来还有点清醒的我被这个Warning搞糊涂了,还以为是旧的方法出了什么问题被废弃,结果把本来简单的问题想的越来越复杂:(。于是按编译提示把ConfigurationSettings改成了ConfigurationManager,显然这是徒劳的,问题依旧,还是无法取到Config文件里的参数值

    在ConfigurationSettings和ConfigurationManager间又倒腾了半天,仍然是毫无起色。在郁闷了很久之后,突然醍醐灌顶想到,config文件是一个应用的全局配置,应该在应用本身正常启动后才能被载入生效。由于Unit Test使用反射的方式载入assembly和class,再Invoke被测试的方法,这样一来本身的 应用没有被正常的启动,config信息当然也就无从获取。于是马上启动应用本身,果然就取到了config文件中配置的参数。

    所以在做Unit Test的时候,需要注意被测试的方法是否依赖了config文件中的参数,如果有需要暂时使用hardcode的常量来代替,再进行我们的Unit Test测试,否则就只有自个郁闷去吧

    以上问题出现在ASP.NET项目中对Web.config文件的读取,至于WinForm程序的*.config文件想来也该有这个问题,不过还没有亲自去验证。


本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。

目录
相关文章
|
6月前
|
XML Java 数据库连接
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——hibernate的config文件(hibernate.cfg.xml)
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——hibernate的config文件(hibernate.cfg.xml)
|
数据库
如何在web.config文件中配置连接Access数据库?
如何在web.config文件中配置连接Access数据库?
92 0
|
Kubernetes 容器
k8s指定config文件查看node—2023.02
k8s指定config文件查看node—2023.02
100 0
|
JavaScript 开发者
Vue 创建项目后没有 webpack.config.js(vue.config.js) 文件
Vue 创建项目后没有 webpack.config.js(vue.config.js) 文件
562 0
|
1月前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
141 0
若依修改,若依的com.ruoyi.framework.config在那?搜索文件使用ctrl+shift+f不用搜狗输入法,其他輸入法,用英文
若依修改,若依的com.ruoyi.framework.config在那?搜索文件使用ctrl+shift+f不用搜狗输入法,其他輸入法,用英文
|
4月前
|
前端开发 NoSQL JavaScript
若依修改---重新部署项目注意事项,新文件初始化需要修改的地方,打包后的文件很难进行修改,如果想要不断修改项目,注意保存原项目,才可以不断修改,前端:在Vue.config.js文件中修改target
若依修改---重新部署项目注意事项,新文件初始化需要修改的地方,打包后的文件很难进行修改,如果想要不断修改项目,注意保存原项目,才可以不断修改,前端:在Vue.config.js文件中修改target
|
4月前
|
前端开发 JavaScript Linux
若依修改之后,无法访问前端项目如何解决,只能访问后端的接口,我的接口8083,端不显示咋解决?在vue.config.js文件中的映射路径要跟后端匹配,到软件商店里找到Ngnix配置代理,设80不用加
若依修改之后,无法访问前端项目如何解决,只能访问后端的接口,我的接口8083,端不显示咋解决?在vue.config.js文件中的映射路径要跟后端匹配,到软件商店里找到Ngnix配置代理,设80不用加
|
5月前
|
Web App开发 JavaScript
使用CRXjs、Vite、Vue 开发 Chrome 多页面插件,手动配置 vite.config.ts 和 manifest.json 文件
使用CRXjs、Vite、Vue 开发 Chrome 多页面插件,手动配置 vite.config.ts 和 manifest.json 文件
204 0
|
6月前
|
移动开发 监控 小程序
mPaaS常见问题之uniapp ios端云打包的配置config文件如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
184 0