在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文件里的参数值 emdgust.gif

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

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

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


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值