【问题标题】:app.configs and MSTest Project - null reference for a connection stringapp.configs 和 MSTest 项目 - 连接字符串的空引用
【发布时间】:2010-10-30 03:46:31
【问题描述】:

当我尝试运行单元测试 (mstest) 时,我遇到了这个问题。
代码行:

_mainCnStr = System.Configuration.ConfigurationManager.
               ConnectionStrings["main"].ConnectionString;

作为空引用返回

当我运行它时,它不会在主 UI 项目中执行此操作。获取单元测试项目看到的此连接字符串设置的正确方法是什么?我尝试嵌入作为资源。我试过总是复制。什么是可以为我解决此问题的正确设置组合?

【问题讨论】:

    标签: c# .net unit-testing app-config


    【解决方案1】:

    使用 MSTest 需要注意的一件事(至少来自 IDE);它不会在常规输出 (bin) 文件夹中运行测试,并且它不尊重项目的文件包含(“复制到输出目录”)。您经常需要明确告诉它 (MSTest) 哪些文件要放入测试区域。您需要在此列表中包含“app.config”;通过 testrunco​​nfig(“部署”),或通过向受影响的测试夹具添加属性 ([DeploymentItem])。

    【讨论】:

    • 将 DeploymentItem("db.config") 放在测试类的顶部后,它起作用了!谢谢。
    【解决方案2】:

    您应该在单元测试项目中添加一个app.config。它不会自动使用 UI 应用程序的app.config 中的设置。

    【讨论】:

    • 我不应该能够将我的配置嵌入到程序集中吗?我以为我以前见过这个。
    • 测试项目右键,添加“应用程序配置文件”,复制内容。它应该工作......
    • 好的,想通了。但仍然将此信息复制到其他 2 个项目进行测试似乎有点奇怪。
    • 我猜任何其他编译选项,但无。总是取消复制。
    • 配置文件未嵌入程序集中,它与名称“[entryassembly].exe.config”一起发布。由于测试项目使用另一个入口程序集,它需要一个单独的文件。顺便说一句,您可能希望针对测试数据库进行测试,而不是生产服务器。
    【解决方案3】:

    我假设 mstest 像 nunit 测试一样嵌入在由测试应用程序加载的单独程序集中?在这种情况下,您可能需要创建一些加载到配置文件中的测试设置代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      • 2015-06-15
      • 1970-01-01
      • 1970-01-01
      • 2018-08-23
      • 1970-01-01
      • 2015-01-13
      相关资源
      最近更新 更多