Tsql 如何使用Resharper测试运行程序对T-SQL代码进行单元测试?

Tsql 如何使用Resharper测试运行程序对T-SQL代码进行单元测试?,tsql,unit-testing,resharper,Tsql,Unit Testing,Resharper,基本上,这个标题说明了一切:我正在使用Resharper测试运行程序我的测试是使用NUnit编写的,现在我需要测试一些T-SQL代码 我该怎么做 如有任何有关教程和公司的帮助链接,将不胜感激 我不知道的是: 我应该把测试放在哪里?CT-SQL也是吗。。。? 如何设置测试运行程序以运行这些测试? 这在Resharper中是可能的吗? 我已经为T-SQL编写了一些单元测试,测试SQL代码中的语法错误。在NUnit或Microsofts单元测试框架中,这些测试是从C执行的,并使用前面的语句运行: SE

基本上,这个标题说明了一切:我正在使用Resharper测试运行程序我的测试是使用NUnit编写的,现在我需要测试一些T-SQL代码

我该怎么做

如有任何有关教程和公司的帮助链接,将不胜感激

我不知道的是:

我应该把测试放在哪里?CT-SQL也是吗。。。? 如何设置测试运行程序以运行这些测试? 这在Resharper中是可能的吗?
我已经为T-SQL编写了一些单元测试,测试SQL代码中的语法错误。在NUnit或Microsofts单元测试框架中,这些测试是从C执行的,并使用前面的语句运行:

SET FMTONLY ON;
在您只返回元数据之后,因此在此之后不会执行任何操作,所以您甚至可以测试通常会修改数据的查询

例如,请参阅下面的NUnit测试,如果过程存在并且本身或任何存储过程依赖项中没有语法错误,则该测试将成功

[Test]
public void GivenStoredProcedure_WhenParsedBySqlServer_ThenItsResultShouldBeZero()
{
    const string sqlText = "SET FMTONLY ON; EXEC dbo.MyStoreProc;";

    var sqlConnection = new SqlConnection(connectionString);
    var sqlCommand = new SqlCommand(sqlText, sqlConnection);
    sqlCommand.CommandType = CommandType.Text;

    try
    {
        sqlConnection.Open();
        var result = sqlCommand.ExecuteNonQuery();              
        Assert.That(result, Is.EqualTo(0));
    }
    finally
    {
        if (sqlConnection.State == ConnectionState.Open)
        {
            sqlConnection.Close();
        }
        sqlConnection.Dispose();
    }      
}

我已经为T-SQL编写了一些单元测试,测试SQL代码中的语法错误。在NUnit或Microsofts单元测试框架中,这些测试是从C执行的,并使用前面的语句运行:

SET FMTONLY ON;
在您只返回元数据之后,因此在此之后不会执行任何操作,所以您甚至可以测试通常会修改数据的查询

例如,请参阅下面的NUnit测试,如果过程存在并且本身或任何存储过程依赖项中没有语法错误,则该测试将成功

[Test]
public void GivenStoredProcedure_WhenParsedBySqlServer_ThenItsResultShouldBeZero()
{
    const string sqlText = "SET FMTONLY ON; EXEC dbo.MyStoreProc;";

    var sqlConnection = new SqlConnection(connectionString);
    var sqlCommand = new SqlCommand(sqlText, sqlConnection);
    sqlCommand.CommandType = CommandType.Text;

    try
    {
        sqlConnection.Open();
        var result = sqlCommand.ExecuteNonQuery();              
        Assert.That(result, Is.EqualTo(0));
    }
    finally
    {
        if (sqlConnection.State == ConnectionState.Open)
        {
            sqlConnection.Close();
        }
        sqlConnection.Dispose();
    }      
}

当你说T-SQL时,你是指select语句、存储过程还是UDF?还是所有的?所有的,主要是经典的CRUD语句,还有存储过程。我不确定你在问什么。是什么阻止您使用NUnit和使用这些语句的ADO.NET在C中编写测试?另一方面,为什么不使用呢?如果我使用C和NUnit进行测试,它不再是一个单元测试,而是一个集成测试,我测试C代码以访问数据库和存储过程。tSQLt看起来不错,但它是一个额外的工具。我希望你能把它包括在已经存在的测试中。我不同意这是一个集成测试。您不需要测试访问数据库的生产代码。相反,您直接在NUnit测试中使用ADO.NET,作为测试语句的技术手段。您不会测试应用程序与数据库的集成。话虽如此,我建议你不要走这条路。使用像tSQLt这样的数据库单元测试框架对数据库代码进行单元测试。当你说T-SQL时,你是指select语句、存储过程还是UDF?还是所有的?所有的,主要是经典的CRUD语句,还有存储过程。我不确定你在问什么。是什么阻止您使用NUnit和使用这些语句的ADO.NET在C中编写测试?另一方面,为什么不使用呢?如果我使用C和NUnit进行测试,它不再是一个单元测试,而是一个集成测试,我测试C代码以访问数据库和存储过程。tSQLt看起来不错,但它是一个额外的工具。我希望你能把它包括在已经存在的测试中。我不同意这是一个集成测试。您不需要测试访问数据库的生产代码。相反,您直接在NUnit测试中使用ADO.NET,作为测试语句的技术手段。您不会测试应用程序与数据库的集成。话虽如此,我建议你不要走这条路。使用像tSQLt这样的数据库单元测试框架对数据库代码进行单元测试。