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

问题描述

| 我的数据库连接不起作用,有人可以告诉我为什么吗? 我是从VS 2010中的单元测试运行的。简单的Assert.IsTrue(testDbConnection)失败了。 我也尝试过以普通模式作为Web应用程序运行它,但我遇到了同样的异常。 请注意,XXXXX当然是有目的的。 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.
    

解决方法

由于测试或Web应用程序均未运行,因此您看到的问题很可能是因为未加载配置。我怀疑以下...
ConfigurationManager.ConnectionStrings[\"DomainDatabase\"]
...返回null。当您尝试访问该null对象(引用)上的ConnectionString属性时,将引发NullReferenceException。我将验证您的connectionStrings配置是否与此处定义的定义匹配: 您可以通过以下测试来确认未加载设置:
[TestMethod]
public void VerifyThatMyDatabaseConnectionStringExists()
{
    Assert.IsNotNull(ConfigurationManager.ConnectionStrings[\"DomainDatabase\"]);
}
如果此测试失败,请使用正确的配置将app.config添加到测试项目中。当您...可以从我手中拿走这个小石子-不用等待,错误的引用-该测试通过时,您就会知道您已经解决了这个问题。 提示:此答案建议您应该编写测试来验证您的设置是否存在,以防止疯狂。     ,尝试将具有connectionString的app.config文件复制到Test-project中,它可以工作!     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...