【问题标题】:DataSource Attribute with Connection String to SQL Server具有与 SQL Server 的连接字符串的 DataSource 属性
【发布时间】:2014-03-02 16:23:35
【问题描述】:

我正在尝试使用 DataSource 属性创建一个 DataSource,如下例所示:

[TestMethod]
[DataSource("System.Data.SqlClient", "Data Source=.\\153.71.88.80;Database=LoadData_For_R10Core_10_5_Final_Extended;Integrated Security=True;Connect Timeout=30;User Instance=True", "Products", DataAccessMethod.Sequential)]
public void GetProducts()
{
}

但我不断收到错误消息:

单元测试适配器连接数据源或读取数据失败。有关解决此错误的详细信息,请参阅 MSDN 库中的“数据驱动单元测试故障排除”(http://go.microsoft.com/fwlink/?LinkId=62412)。

为了能够连接到 SQL 服务器,创建连接字符串的正确格式是什么。另外,我在那台机器上有 ODBC 连接,所以如果有办法使用 ODBC 连接,我会更喜欢。

【问题讨论】:

    标签: c# .net unit-testing datasource


    【解决方案1】:

    假设您使用的是 SQL Server 的默认实例,DataSource 应该是 . 153.71.88.80,而不是两者。另外,删除分隔它们的\\

    如果您使用 IP 或主机名,请确保:

    • 在 SQL Server 的配置中启用了 TCP/IP。
    • SQL Server 的 TCP 端口 1433(或您可能已设置的非默认端口)未被防火墙阻止。

    如果目标 SQL Server 是本地的,我会使用 . - 少麻烦。

    【讨论】:

    • 我将连接字符串更改为:[DataSource("System.Data.SqlClient", "Data Source=153.71.88.80;Database=LoadData_For_R10Core_10_5_Final_Extended;Integrated Security=True;Connect Timeout=30;User Instance =True", "Products", DataAccessMethod.Sequential)] 但得到完全相同的错误
    • 您确定 TCP/IP 已启用吗?可以连接 SSMS 吗?
    【解决方案2】:

    嗯,对我来说,很难找到真正的方法来了解如何配置 DDT。 在这里,我发现一个想法是对所需结构的一个很好的解释: http://blogs.msdn.com/b/vstsqualitytools/archive/2006/01/10/511030.aspx

    这里: http://msdn.microsoft.com/en-us/library/ms182527.aspx

    我正在使用 SQL Server,但我没有访问权限,因此,使用 Microsoft 的一般示例,这就是我的工作方式 (VB.Net):

    < TestMethod() > 
    < DataSource("System.Data.SqlClient", "Data Source=localhost;Initial Catalog=Prueba;Integrated Security=True", "AccountTest", DataAccessMethod.Sequential) >
    
    Public Sub AddIntegerHelper_DataDrivenValues_AllShouldPass()   <br>
        Dim target As New CheckingAccount()   <br>
        Dim x As Integer = Convert.ToInt32(tscntx.DataRow("FirstNumber"))   <br>
        Dim y As Integer = Convert.ToInt32(tscntx.DataRow("SecondNumber"))  <br>
        Dim expected As Integer = Convert.ToInt32(tscntx.DataRow("Sum"))  <br>
        Dim actual As Integer = target.AddIntegerHelper(x, y)  <br>
        Assert.AreEqual(expected, actual)  <br>
    End Sub  <br>
    

    {localhost} 更改为您的 sql 服务器名称或 IP 服务器(即 192.18.130.26)。
    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2011-02-24
      • 2020-06-02
      • 1970-01-01
      • 1970-01-01
      • 2016-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多