尝试通过测试单元引用数据库连接时出现 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 异常的主要内容,如果未能解决你的问题,请参考以下文章
在 VS 2017 中针对完整的 .net 框架 asp.net 核心项目运行 XUnit 2.2.0 单元测试时出现 System.BadImageFormatException