我想寫一個單元測試,它聲明一個連接字符串是有效的,以便建立一個連接到一個SQL Db。如何測試與Db的連接是否成功建立?
,如果我有:
string connectionString = GetCOnenctionString();
bool conenctionEstablished = false;
如何設置作爲檢查的DB用「的connectionString」的結果「conenctionEstablished」變量的值提供?
以便我可以在斷言中使用它。
我想寫一個單元測試,它聲明一個連接字符串是有效的,以便建立一個連接到一個SQL Db。如何測試與Db的連接是否成功建立?
,如果我有:
string connectionString = GetCOnenctionString();
bool conenctionEstablished = false;
如何設置作爲檢查的DB用「的connectionString」的結果「conenctionEstablished」變量的值提供?
以便我可以在斷言中使用它。
你可以嘗試在一個try/catch然後conenctionEstablished基於連接是否成功設置連接。
因此,連接後不會拋出異常.Open()確保啓動成功連接的事實? – pencilCake
不一定。如果您正在使用可靠性更新1(kb2533523)的早於.NET 4的System.Data.dll版本上運行,那麼打開一個'SqlConnection'可以爲您提供一個池連接,當連接處於池中時該連接斷開連接。要真正證明連接是活着的,執行任何'SqlCommand'(比如evpo下面提到的'select 1')。 –
這就是說,因爲在你的特定情況下,你只想打開一個連接,連接字符串,所以彙集的連接不是一個因素,所以只需調用'Open()'就足夠了。我的其他評論是在一般情況下。 –
有可用的不同狀態,看看這個:
private static void OpenSqlConnection(string connectionString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
Console.WriteLine("ServerVersion: {0}", connection.ServerVersion);
Console.WriteLine("State: {0}", connection.State);
}
}
有一個枚舉名爲Connectionstate 所以你可以斷言,如果連接關閉,打開連接等。
Assert.AreEqual(ConnectionState.Connecting, sqlcon.State);
它不會是一個「純粹的」單元測試,因爲你的數據庫是真實的,但任何方式。我將使用try catch塊,並在打開連接後,使用ExecuteNonQuery()執行「select 1」語句。在try塊的結尾將標誌設置爲true。
我們可以比較檢查,如果連接是打開與否,通過使用下面的代碼:
using System.Data;
if (conn.State == ConnectionState.Open)
{
return true;
}
else
{
return false;
}
代碼單元測試不應該打真正的數據庫。 –