单元测试和SQL数据库连接

时间:2009-06-03 14:07:41

标签: sql-server vb.net linq unit-testing

我遇到了我创建的单元测试的问题。第一次这样做,所以我不确定为什么我会收到此错误

<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查询。我相信这可能是造成我错误的原因。

3 个答案:

答案 0 :(得分:0)

由于您使用的是集成安全性,因此问题很可能是:“谁在运行测试以及他们对网络和/或SQL Server有什么权限?”。如果它是本地计算机帐户,则可能甚至不允许通过网络。

我注意到您的连接字符串没有Server=

如果您在本地连接,则应该Server=(local)

答案 1 :(得分:0)

您是否在本地SQL Native Client配置中设置了Foo别名?没有它,“数据源= Foo;”您的连接字符串中的引用将不起作用。

答案 2 :(得分:0)

我不知道这是否与OP遇到的相同,但我发现一个非常类似的问题的解决方案是将Provider=SQLOLEDB;添加到连接字符串。