Visual Studio 中的 SQL Server 单元测试 - DROP DATABASE [MyDb]

SQLServer UnitTesting in Visual Studio - DROP DATABASE [MyDb]

我在 Visual studio 中为我的 SQL 服务器项目设置了一个单元测试项目。

测试本身有效,设置包括部署该数据库。我的问题是我想进行“全新”测试,每次 运行 测试时,数据都会累积。

我尝试从 SqlDatabaseSetup.cs 手动调用 'DROP DATABASE',但此时我似乎没有 DataConnection。

[TestClass()]
public class SqlDatabaseSetup
{

    [AssemblyInitialize()]
    public static void InitializeAssembly(TestContext ctx)
    {
        var q = ctx.DataConnection.CreateCommand();
        q.CommandText = "DROP DATABASE MyDb;";
        q.ExecuteNonQuery();

        // Setup the test database based on setting in the
        // configuration file
        SqlDatabaseTestClass.TestService.DeployDatabaseProject();
        SqlDatabaseTestClass.TestService.GenerateData();
    }

}

是否有任何指示应该首先刷新数据库(无需为每个 table 手动调用 DELETE FROM XX),或者我可以通过命令为我执行此操作的方法吗?

解决方法如下:

    [AssemblyInitialize()]
    public static void InitializeAssembly(TestContext ctx)
    {
        // Setup the test database based on setting in the
        // configuration file
        try
        {
            var conn = SqlDatabaseTestClass.TestService.OpenExecutionContext();
            var cmd = conn.Connection.CreateCommand();
            cmd.CommandText = "use master; ALTER DATABASE [MyTestDb] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;DROP DATABASE MyTestDb;";
            cmd.ExecuteNonQuery();
        }
        catch
        {

        }
        SqlDatabaseTestClass.TestService.DeployDatabaseProject();
        SqlDatabaseTestClass.TestService.GenerateData();
    }