2011-05-26 39 views
0

我的數據庫連接dosnt工作,有人可以告訴我爲什麼嗎?C#.net異常當試圖通過測試單元參考db連接

我從VS 2010中的單元測試運行這個。Simple 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. 
+0

不知道它是否重要,但'connectionString'在您的配置中拼寫爲小寫'c',測試代碼中拼寫爲大寫'c'。 – verdesmarald 2011-05-26 09:03:21

+0

你究竟在哪裏得到例外? – 2011-05-26 09:05:30

+0

我從VS 2010中的一個單元測試運行這個。Simple Assert.IsTrue(testDbConnection) – Marthin 2011-05-26 09:08:23

回答

2

既不測試或Web應用程序的工作,很可能是你看到的問題是因爲配置沒有被加載。我懷疑以下...

ConfigurationManager.ConnectionStrings["DomainDatabase"] 

...返回null。當您嘗試訪問該空對象(引用)上的ConnectionString屬性時,引發NullReferenceException。我想確認你的配置的ConnectionStrings定義here的定義相匹配:

您可以驗證您的設置沒有被加載了以下測試:

[TestMethod] 
public void VerifyThatMyDatabaseConnectionStringExists() 
{ 
    Assert.IsNotNull(ConfigurationManager.ConnectionStrings["DomainDatabase"]); 
} 

如果測試失敗,添加應用程序。使用適當的配置配置到您的測試項目。當... you can take this pebble from my hand - 沒有等待,錯誤的參考 - 這個測試通過,你會知道你已經解決了這個問題。

提示:This answer建議您應該編寫測試以驗證您的設置是否存在以防止發生瘋狂。

0

嘗試複製app.config文件,它具有connectionString到測試項目,它的工作原理!