我是单元测试的新手,所以我可能误解了一些重要的东西,但我被要求为我的WCF服务创建一些单元测试。这是一个非常简单的服务,它执行存储过程并返回结果。我操作的第二行是:
string conn = ConfigurationManager
.ConnectionStrings["AtlasMirrorConnectionString"].ConnectionString;
部署服务时一切正常,但在单元测试下,配置文件似乎变得不可见。 ConfigurationManager.ConnectionStrings["AtlasMirrorConnectionString"]
成为空引用并相应地抛出。
如何在测试中包含我的配置文件?现在,我能够测试的唯一行为是丢失配置文件的处理,这不是非常有用。
答案 0 :(得分:5)
上周和本周我一次又一次地问我并回答:)
如果你在另一个项目中进行了单元测试(VS生成的测试项目,类库等......),只需为该单元测试项目创建一个app配置,并将相同的配置键放在项目中。
当然我正在简化,因为你可能绝对想要使用特定的测试值来自定义这些键,但作为一个开始复制什么有效,然后自定义,以防你想要指向另一个数据库,机器等... :)
答案 1 :(得分:3)
您必须使用DeploymentItemAttribute修饰测试类或方法,以将配置文件部署到测试目录中。
在TestClass上使用类似的东西(这假设你有一个app.config的副本,在你的测试类本地):
[DeploymentItem("app.config")]
答案 2 :(得分:3)
如果您希望您的单元测试始终具有与项目相同的值,那么您可以使用以下行作为测试项目中的构建后事件
copy /Y "$(SolutionDir)ProjectName\App.config" "$(TargetDir)TestProjectName.dll.config"