在 SQL SSDT 单元测试中重新初始化表值

5 sql-server visual-studio unit-test ssdt sql-server-2016

我正在创建 SQL Server 单元测试。我们正在测试各种存储过程。

在单元测试原则中,设置一个小的数据库表,填充值,拆除(截断/删除)数据库表,并为每个测试重新设置是一个很好的做法。这样每个单元测试都会有一个干净的环境来验证插入、选择、更新、删除等的 sproc,

有没有人在哪里或如何在 Sql 单元测试中重新初始化表值?SQL SSDT VS 2017 中的单元测试资源非常新,所以我认为很多人都在试图弄清楚和理解。

随意在下面显示或添加图片。

http://www.sqlservercentral.com/articles/Unit+Testing/155651/ http://www.erikhudzik.com/2017/08/23/writing-sql-server-unit-tests-using-visual-studio- nunit-and-sqltest/

Visual Studio SSDT 中的图片:

在此处输入图片说明

此外,尝试在 SQLDatabaseSetup.cs 中查看此类:

 [TestClass()]
    public class SqlDatabaseSetup
    {

        [AssemblyInitialize()]
        public static void InitializeAssembly(TestContext ctx)
        {
            // Setup the test database based on setting in the
            // configuration file
            SqlDatabaseTestClass.TestService.DeployDatabaseProject();
            SqlDatabaseTestClass.TestService.GenerateData();
        }

    }
}


using Microsoft.Data.Tools.Schema.Sql.UnitTesting;
Run Code Online (Sandbox Code Playgroud)

Eit*_*min 0

几年前,我正是为此目的创建了usp_Generate_Merge_For_Table过程。它可以使用值构造函数生成 MERGE 命令,以便“重新初始化”特定表的内容。

你可以在这里找到它:

https://gist.github.com/EitanBlumin/7faba0b39c4f90d4cfa879a45f3e01eb#file-generate_merge_for_table-sql

直接链接到原始脚本:

https://gist.githubusercontent.com/EitanBlumin/7faba0b39c4f90d4cfa879a45f3e01eb/raw/608177e77da0a42d686098ab10703bbba8c54d64/Generate_Merge_For_Table.sql

只需在数据库中创建该过程,运行它,同时将您的表名作为参数发送给它,如下所示:

EXEC usp_Generate_Merge_For_Table 'cities', 'dbo'
Run Code Online (Sandbox Code Playgroud)

然后您可以将其输出复制并粘贴到您的单元测试项目中。

您可以在此处找到有关如何使用它的更多信息和详细说明:

https://eitanblumin.com/2018/10/28/generate-merge-statement-as-a-snapshot-of-your-tables-content/