最近对一个VS开发的web service写了一些unit test,虽然有test team会做test,但是对功能模块做好unit test会给后续的开发工作带来一些便利。
以下是VS unit test中遇到的一些问题和解决办法:
VS做unit test可以用一个第三方的工具,我这要讨论的是用VS自带的unit test工程。
问题1:
Web项目中web.config在unit test的项目中读不到,该这么处理?
解决方法:
1. 可以创建unit test的app.config,然后将web.config的内容拷贝到app.config。缺点:每次修改web.config要记得修改app.config
2. 用将app.config这个文件放到当前测试工程的的bindebug或binrealease文件夹下并修改文件名为:<你测试工 程的名字>.dll.config,这样单元测试运行的时候就可以读到web.config的内容
问题2:
项目中用到了xml文件读取一些文件,或者别的外部资源,单元测试中无法加载这些问题。
解决办法:
1. 如代码中用的是appdomian.currentDomain.BaseDirectory,请将相关配置文件放到bindebug或binrelease文件夹下
2. 可以启用test setting,在选项卡中勾选enable deployment,然后选择要拷贝的xml文件或者别的外部资源,注意,这样修改后的默认相关路径就改变到了TestResult文件下的测试用例中。
3. 可以在test setting中写脚本进行文件拷贝的工作。
问题3:
使用的web的cache功能后有些文件会加载错误
解决办法:
1. cache在unit test中要使用绝对路径,而非相对路径。
总结,为了每次修改web项目后(对功能没有改变),unit test不会做相关改动,我的做法是,在unit test中写一个PreWork的方法,并在一个类中初始化这个方法,而所有的unit test的类都从这个类去继承。