2009-06-03 72 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;添加到连接字符串。