6

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

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

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

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

4

3 回答 3

5

一次又一次地问,上周和本周也被我回答了:)

如果您在另一个项目(VS 生成的测试项目、类库等)中有您的单元测试,只需为该单元测试项目创建一个应用程序配置,并放置与您在有效项目中相同的配置键。

当然,我正在简化,因为您绝对希望使用特定的测试值自定义这些键,但是作为开始复制有效的内容然后进行自定义,以防您想指向另一个数据库、机器等... :)

于 2011-09-01T14:44:34.007 回答
3

您必须使用 DeploymentItemAttribute 装饰测试类或方法,才能将配置文件部署到测试目录中。

在您的 TestClass 上使用类似的东西(这假设您有一个 app.config 的副本本地到您的测试类):

[DeploymentItem("app.config")]
于 2011-09-01T14:43:26.543 回答
3

如果您希望您的单元测试始终具有与您的项目相同的值,那么您可以使用以下行作为测试项目中的构建后事件

copy /Y "$(SolutionDir)ProjectName\App.config" "$(TargetDir)TestProjectName.dll.config"
于 2013-12-20T15:12:19.350 回答