我遇到了我创建的单元测试的问题。第一次这样做,所以我不确定为什么我会收到此错误
<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 :(得分:0)
由于您使用的是集成安全性,因此问题很可能是:“谁在运行测试以及他们对网络和/或SQL Server有什么权限?”。如果它是本地计算机帐户,则可能甚至不允许通过网络。
我注意到您的连接字符串没有Server=
如果您在本地连接,则应该Server=(local)
答案 1 :(得分:0)
您是否在本地SQL Native Client配置中设置了Foo别名?没有它,“数据源= Foo;”您的连接字符串中的引用将不起作用。
答案 2 :(得分:0)
我不知道这是否与OP遇到的相同,但我发现一个非常类似的问题的解决方案是将Provider=SQLOLEDB;
添加到连接字符串。