在使用MS EnterpriseLibrary的项目中使用单元测试的方法
今天需要记录的是在进行这个框架编写的时候进行单元测试就成了问题.因为EnterpriseLib需要配置文件.一开始由于我自己知识的不足,无法解决
这个问题,于是就查看EnLib自己的测试代码,发现是自己实现了一个测试的configurationcontex的类,在其中加入比如数据库连接等字
符串,最终生成EnLib所需的对象,我也照样编写了configurationcontex类,然后编写了一个UnitTestBase的类在其中生成
了DataAccess中的Database的实例,然后传递给我的框架类进行测试.比较方便的解决了这个问题.但是后来我在引入Caching的时候发
现这样作好像有点问题,始终无法找到我加入的CacheManager,找了一会没有找到原因.但是我突然发现在Caching的测试代码里面居然有
Microsoft.Practices.EnterpriseLibrary.Caching.dll.config,EnterpriseLibrary.Caching.config
这样的文件,难道在dll也可以有自己的配置文件?于是我依样加入了这样的文件到我的类库中,bingo!测试通过!
也就是说,如果dll自行运行的话System.Configuration.ConfigurationSettings.GetConfig是获取的以自己dll文件名+.config文件中的值.随后我单独的单元测试也证实了这一点.
所以,如果在进行类库开发的时候如果有的东西需要从配置文件中读取的话,不需要再编写臃肿的console程序或者winform程序,只需要加入一个配
置文件就行了,不过需要注意的是在加入app.config文件之后需要自行将其文件名修改为和library的输出文件明+config后缀,并且在项
目的生成后事件中加入如下的脚本"copy "$(ProjectDir)Test*.config" "$(TargetDir)"",VS.NET不会像console程序或者winform程序那样会帮你改名和拷贝.