将配置文件自动复制到vs的测试项目中

简介:

问题描述:

对一个需要读取web.config获取数据库连接字符串的项目创建单元测试,测试抛出异常:System.NullReferenceException: 未将对象引用设置到对象的实例,一步步debug发现在测试项目中无法读取被测项目的web.config文件。后来把web.config整个复制到测试项目中,却也发现不行。无奈之下,把复制到测试项目的web.config改成app.config,却发现可以从app.config中正确读出配置信息了。

 

相关约定:

1、如果是WEB应用程序,因为配置文件名必须为web.config,所以如果当前目录下有web.config文件,就读取当前目录下的配置文件,如果当前目录没有则读取根目录下的配置文件。

2、如果是winform/wpf/控制台应用程序,则配置文件就是【程序名.exe.config】

这些都是.NET配置系统约定好的规则,更详细的信息楼主可以使用reflector查看System.Web.Configuration.WebConfigurationManager和System.Configuration.ConfigurationManager两个类的源代码

3、如果是vs生成的单元测试项目,配置文件名必须是app.config。所以如果是在Web应用程序中运行单元测试,需要把web.config对应地修改成app.config。这样单元测试项目才能正确地从配置文件中读出相应的配置。因为单元测试是由测试项目运行的,当运行测试项目时,只是引用了我们的被测项目,所以是寻找测试项目的app.config文件

解决方法:

1.在测试项目中添加app.config文件,将被测项目的app.config文件中的内容复制到测试项目的app.config文件中(不推荐,需要维护两份app.config文件)。如果是web应用程序,还需要将web.config重命名为app.config,才能正确被测试项目读取。

2.在解决方案管理器中,右击测试项目→添加→现有项,选择被测项目的app.config文件,并选择“添加为链接”(如果直接添加则和方法1无区别,等同于复制文件,需要维护两个app.config文件,无法随被测项目中的原文件进行更新)

3、修改测试项目的生成事件,以便能够自动将web.config (或app.config)复制到测试项目的bin(输出)目录下。只需要简单几步即可

右键点“测试项目”,选择属性

image

点击“生成事件”→在“后期生成事件命令行”的文本框中输入      copy "$(SolutionDir)\WebApplication1\web.config" "$(ProjectDir)$(OutDir)$(TargetFileName).config" 

其中WebApplication1要替换成你被测试项目的名称

image

按下“Ctrl+s”保存,这样每次运行测试项目的时候,他就会从被测试项目中复制一份配置文件

 

参考网址:

Can a unit test project load the target application's app.config file?

用VS2008单元测试需要读取app.config的项目


作者:kissazi2 
出处:http://www.cnblogs.com/kissazi2/ 
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载:http://www.cnblogs.com/kissazi2/archive/2013/03/15/2960661.html

目录
相关文章
|
11月前
|
Java Maven Spring
maven项目,动态读取外部配置文件
maven项目,动态读取外部配置文件
234 0
|
应用服务中间件
tomcat修改默认端口详细步骤(包含运行测试)
在tomcat端口被占用或者需要把默认的8080端口换成其他的端口,就可以修改默认端口。
658 0
tomcat修改默认端口详细步骤(包含运行测试)
|
Java Maven
运行JAR包 没有主清单属性解决办法
把下面的代码复制粘贴到maven的pom文件中 更新一下即可
|
5天前
|
Java Maven
springboot jar包启动提示没有主清单属性
springboot jar包启动提示没有主清单属性
|
9月前
|
弹性计算 Java 应用服务中间件
复制已有的Tomcat作为新的Tomcat,只需修改三个配置文件,五步操作,保证能正常运行!
复制已有的Tomcat作为新的Tomcat,只需修改三个配置文件,五步操作,保证能正常运行!
|
6月前
|
Java 应用服务中间件 Android开发
进公司第一步!配置项目环境变量(详细介绍)
进公司第一步!配置项目环境变量(详细介绍)
27 0
|
8月前
|
XML 存储 数据格式
基于大量文件的名称特征自动新建多个文件夹并自动复制对应文件:Python
本文介绍基于Python,对一个文件夹下大量栅格影像,基于其各自文件名,分别创建指定名称的新文件夹,并将对应影像文件复制到不同的新文件夹下的方法。
112 3
基于大量文件的名称特征自动新建多个文件夹并自动复制对应文件:Python
|
SQL 分布式计算 资源调度
|
Java Maven
修改jar包里的配置文件
jar包项目配置文件需要修改,只想修改里面的文件,而不重新使用maven打包。
271 0
|
Java Maven
maven项目新建后缺少目录
maven项目新建后缺少目录
155 0
maven项目新建后缺少目录