2009-06-03 71 views
0

我遇到了我創建的單元測試問題。第一次做,所以我不知道爲什麼我收到此錯誤單元測試和SQL數據庫連接

<DeploymentItem("ETDS.exe")> <DataSource("System.Data.SqlClient", "Data Source=Foo;Initial Catalog=FooDB;Integrated Security=True", "User_Names", DataAccessMethod.Sequential)> <TestMethod()> _ 
Public Sub ValidateUserNameTest() 
    Dim target As Login_Accessor = New Login_Accessor ' TODO: Initialize to an appropriate value 
    Dim expected As Boolean = True ' TODO: Initialize to an appropriate value 
    Dim actual As Boolean 
    actual = target.ValidateUserName 
    Assert.AreEqual(expected, actual) 
End Sub 

我得到的錯誤是

試驗方法ETDS_Unit_Tests.LoginTest.ValidateUserNameTest拋出異常信息:System.Data.SqlClient.SqlException :與SQL Server建立連接時發生網絡相關或特定於實例的錯誤。服務器未找到或無法訪問。驗證實例名稱是否正確,並將SQL Server配置爲允許遠程連接。 (提供程序:命名管道提供程序,錯誤:40 - 無法打開到SQL Server的連接)。

這與我的軟件使用的連接相同,並且軟件運行良好,只有單元測試失敗。我做錯了什麼?

編輯 它似乎失敗了一次表中的每個數據行。 另外,我在我正在測試的方法中使用Linq查詢。我相信這可能是導致我錯誤的原因。

回答

0

因爲您正在使用集成安全性,所以問題很可能是:「誰在運行測試以及他們對網絡和/或SQL Server有什麼權限?」。如果它是本地計算機帳戶,則可能甚至不允許通過網絡。

我注意到,您的連接字符串沒有Server=

如果在本地連接,它應該有Server=(local)

+0

這不會是一個問題。我在開發它的同一個盒子上運行它。 – 2009-06-03 14:45:18

0

你有沒有在您的本地SQL本機客戶端配置的富別名設置?沒有那個「數據源= Foo」連接字符串中的引用不起作用。

+0

你能解釋一下SQL Native Client的配置嗎?我不確定該別名是否已設置,但我懷疑這是LINQ查詢的問題 – 2009-06-04 13:18:21

0

我不知道這是否與遇到的OP相同,但我發現的一個非常類似的問題的解決方案是將Provider=SQLOLEDB;添加到連接字符串。