app.configs 和 MSTest 项目 - 连接字符串的空引用

Posted

技术标签:

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

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

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

作为空引用返回

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

【问题讨论】:

【参考方案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 测试一样嵌入在由测试应用程序加载的单独程序集中?在这种情况下,您可能需要创建一些加载到配置文件中的测试设置代码。

【讨论】:

以上是关于app.configs 和 MSTest 项目 - 连接字符串的空引用的主要内容,如果未能解决你的问题,请参考以下文章

使用 MSTEST 和 Selenium 在并行 Web 测试中中止线程

我正在为我的测试项目使用 MStest (.net core),有没有办法在失败时继续执行测试?

C# 创建一个简单的单元测试实例(MSTest框架)

使用 mstest,我可以针对我支持的每种语言运行我的单元测试套件吗?

如果单独运行 MSTest 测试成功,如果与其他测试一起运行则失败

MSTest 中 [TearDown] 和 [SetUp] 的替代方法是啥?