由于缺少.config文件而导致单元测试失败

时间:2011-09-01 14:40:41

标签: c# wcf web-config vs-unit-testing-framework

我是单元测试的新手,所以我可能误解了一些重要的东西,但我被要求为我的WCF服务创建一些单元测试。这是一个非常简单的服务,它执行存储过程并返回结果。我操作的第二行是:

string conn = ConfigurationManager
    .ConnectionStrings["AtlasMirrorConnectionString"].ConnectionString;

部署服务时一切正常,但在单元测试下,配置文件似乎变得不可见。 ConfigurationManager.ConnectionStrings["AtlasMirrorConnectionString"]成为空引用并相应地抛出。

如何在测试中包含我的配置文件?现在,我能够测试的唯一行为是丢失配置文件的处理,这不是非常有用。

3 个答案:

答案 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"