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

时间:2013-01-15 16:15:17

标签: tsql unit-testing resharper

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

我该怎么做?

任何帮助(链接到教程和公司)都将不胜感激。

我不知道的是:

  • 我在哪里进行测试? C#? T-SQL也是? ...?
  • 如何设置测试运行器来运行这些测试?
  • Resharper甚至可以这样做吗?

1 个答案:

答案 0 :(得分:-1)

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

SET FMTONLY ON;

Microsoft reference of this statement.

在您仅返回元数据后,在此之后没有真正执行任何内容,因此您甚至可以测试通常会修改数据的查询。

例如,请参阅下面的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();
    }      
}