您的位置:首页 > 数据库

关于单元测试中配置文件不能找到的问题解决办法

2008-03-13 17:48 796 查看
在项目的开发过程中,业务层和数据库层需要进行单元测试,在单元测试的代码编写好后,运行时,总是出现异常,对代码进行跟踪后,发现是在数据库层读取配置文件时不能正确读取的原因,由于项目的数据库层使用的是别的项目的框架,对框架中的dll进行反编译后,发现框架读取配置文件的方法是从AppDomain.CurrentDomain.BaseDirectory+ConfigurationManager.AppSettings[“DatabaseListFile”]文件中进行读取,ConfigurationManager.AppSettings[“DatabaseListFile”]可以通过在测试工程中加入App.config文件来
4000
解决,在将配置文件复制到输出目录,代码目录,安装目录后都不能解决问题,跟踪代码后发现AppDomain.CurrentDomain.BaseDirectory的内容是以下的内容:***/TestResults/*** 2007-11-16 19_12_15/Out,原来微软自带的单元测试在运行时,会自动地生成临时目录,将所有需要的文件都复制到这个临时目录下进行运行,为了防止覆盖掉原来的测试结果,系统会自动地根据一定的规则生成临时目录,每运行一次就会生成一个临时目录,所有的临时目录都在与测试单元所在的目录同级的目录下,目录名称为TestResults,我们可以在测试工程中修改临时目录的生成规则,如下图所示:


如果选则Default naming scheme,系统会根据用户名,时间来生成临时目录,如果选择User-defined scheme,系统会根据输入Prefix text来生成临时目录,例如Test,Test[1],Test[2]等等。不管选择那种方法,系统都会生成不同的目录。
由于我们的配置文件使用的是相对路径,所有的配置文件都必须放在AppDomain.CurrentDomain.BaseDirectory下,而在单元测试的项目中AppDomain.CurrentDomain.BaseDirectory返回的却是不同的目录,所以必须想办法将配置文件自动地复制到临时目录中才行,查资料后发现,在单元测试中,会引用Microsoft.VisualStudio.TestTools.UnitTesting命名空间,在这个命名空间中会有TestContext.TestDeploymentDir,它返回的就是我们刚才所说的临时目录,剩下的问题就比较简单了,编写一个方法将所有的配置文件从原有的目录复制到临时目录中就可以了,使用[AssemblyInitialize]可以实现运行单元测试工程时执行配置文件的复制工作。
还有一种更简单的方法,就是在Deployment中将需要复制的内容加到发布列表中就可以了,系统会自动地将需要发布的目录下的所有文件和子目录复制到临时目录下。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐