关于单元测试中配置文件不能找到的问题解决办法
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中将需要复制的内容加到发布列表中就可以了,系统会自动地将需要发布的目录下的所有文件和子目录复制到临时目录下。
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中将需要复制的内容加到发布列表中就可以了,系统会自动地将需要发布的目录下的所有文件和子目录复制到临时目录下。
相关文章推荐
- 关于在linux下出现stdio.h文件不存在等gcc标准库不能找到的解决办法
- 关于读取Src下配置文件问题解决办法
- 本地磁盘,不能如预期那样包含关于:“MSDN VS 6.0 Local”的文件。请更新位 问题解决办法
- 关于在新建的package中用SetContentView()函数时无法找到已创建的R.layout的布局文件的的问题的解决办法
- python与linux共同修改ini配置文件时的空格、注释等问题解决办法
- 关于VS调试时出现的找不到可执行文件问题的可能的解决办法
- 关于在linux下出现stdio.h文件不存在等gcc标准库不能找到的解决的方法
- jQuery 关于IE9上传文件无法进入后台问题的原因及解决办法
- android 典型问题:R.java文件不能自动生成的解决办法
- 对于支持上传文件的手机浏览器出现的图片不能预览问题的解决办法
- 关于解决pyinstaller2.1将.py打包成exe文件在中文目录下不能执行的问题
- persistence.xml配置文件修改存放路径问题的解决办法
- 关于OpenOffice转换失败,源文件无法删除问题的解决办法
- C盘不能新建文件的问题解决办法
- 关于IDEA找不到classpath中package内的xml文件问题和解决办法
- 关于php.ini配置文件不能加载的问题
- 关于 Myeclipse Struts在 配置文件里不能建立Action的问题
- APK文件传到网站上出现不能被下载问题解决办法
- Linux下BMP文件不能正常读取问题的解决办法
- 关于thinkphp应用配置config.php无法加载的问题解决办法