尝试通过测试单元引用数据库连接时出现 C#.net 异常

Posted

技术标签:

【中文标题】尝试通过测试单元引用数据库连接时出现 C#.net 异常【英文标题】:C#.net exception when trying to reference db connection via Test unit 【发布时间】:2011-09-02 10:10:07 【问题描述】:

我的数据库连接不工作,谁能告诉我为什么?

我从 VS 2010 中的单元测试运行它。简单的 Assert.IsTrue(testDbConnection) 并且它失败了。 我也尝试在正常模式下将它作为 Web 应用程序运行,但我得到了同样的异常。

请注意,XXXX 是有目的的。

web.config

  <connectionStrings>
    <add name="ApplicationServices"
         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />
    <add name="DomainDatabase" connectionString="Data Source=XXXXXXXXXX;Initial Catalog=domain;Persist Security Info=True;User ID=campain_xxx;Password=XXXXXXXXX" providerName="System.Data.SqlClient" />
  </connectionStrings>

我的测试方法

 public bool testDBConnection()
        
            try
            
                SqlConnection sqlCon = new SqlConnection(ConfigurationManager.ConnectionStrings["DomainDatabase"].ConnectionString);
                sqlCon.Open();
                sqlCon.Close();

                return true;
            
            catch(Exception e)
            
                Console.WriteLine(e);
                return false;
            

         

这给了我一个例外

System.NullReferenceException: Object reference not set to an instance of an object.

【问题讨论】:

不知道这是否重要,但connectionString 在您的配置中拼写为小写“c”,在测试代码中拼写为大写“c”。 你究竟从哪里得到异常? 我在 VS 2010 的单元测试中运行它。简单的 Assert.IsTrue(testDbConnection) 你说的是web.config? VS 2010 测试套件单元测试将使用 app.config........ 现在我也尝试通过简单地运行我的 Web 应用程序,仍然失败。同样的错误 【参考方案1】:

由于测试或 Web 应用程序都没有工作,您看到的问题很可能是因为配置没有被加载。我怀疑以下...

ConfigurationManager.ConnectionStrings["DomainDatabase"]

...返回空值。当您尝试访问该空对象(引用)上的 ConnectionString 属性时,将引发 NullReferenceException。我将验证您的 connectionStrings 配置是否与 here 定义的定义相匹配:

您可以通过以下测试验证您的设置是否未加载:

[TestMethod]
public void VerifyThatMyDatabaseConnectionStringExists()

    Assert.IsNotNull(ConfigurationManager.ConnectionStrings["DomainDatabase"]);

如果此测试失败,请使用正确的配置将 app.config 添加到您的测试项目中。当 ...you can take this pebble from my hand -- 没有等待,错误的引用 -- 此测试通过时,您将知道您已经解决了这个问题。

提示:This answer 建议您应该编写测试来验证您的设置是否存在以防止疯狂。

【讨论】:

【参考方案2】:

尝试将具有 connectionString 的 app.config 文件复制到测试项目中,它可以工作!

【讨论】:

以上是关于尝试通过测试单元引用数据库连接时出现 C#.net 异常的主要内容,如果未能解决你的问题,请参考以下文章

尝试从 SAP HANA DB 创建实体模型时出现连接错误

编译 C++/CLI DLL 时出现警告

在 VS 2017 中针对完整的 .net 框架 asp.net 核心项目运行 XUnit 2.2.0 单元测试时出现 System.BadImageFormatException

尝试在 MySQL 中连接时出现 java.net.ConnectException [重复]

链接 cxx 可执行文件时出现 Cmake 错误未定义引用

ReferenceError:未定义窗口。当我通过 jest 运行 npm test 进行单元测试时出现此错误