Sql server 如何使用SQL单元测试项目清理数据库

Sql server 如何使用SQL单元测试项目清理数据库,sql-server,database,unit-testing,vstest,Sql Server,Database,Unit Testing,Vstest,我已经使用内置的VisualStudio测试项目创建了SQL单元测试项目。我能够使用测试前、测试和测试后条件为所有场景创建测试用例。此外,我还可以使用DACPAC在运行时创建数据库 到目前为止,这些都很好。我面临的问题是,我无法在执行所有测试用例后删除数据库。我尝试了以下方法,但未能删除数据库: *一,。在最后一个测试用例的finally块中强制删除数据库的自定义脚本 对测试用例进行排序,并在最后一个测试用例的测试后脚本中添加了drop脚本* 有没有办法做到这一点 简而言之,我所需要的就是在最后

我已经使用内置的VisualStudio测试项目创建了SQL单元测试项目。我能够使用测试前、测试和测试后条件为所有场景创建测试用例。此外,我还可以使用DACPAC在运行时创建数据库

到目前为止,这些都很好。我面临的问题是,我无法在执行所有测试用例后删除数据库。我尝试了以下方法,但未能删除数据库:

*一,。在最后一个测试用例的finally块中强制删除数据库的自定义脚本

  • 对测试用例进行排序,并在最后一个测试用例的测试后脚本中添加了drop脚本*
  • 有没有办法做到这一点

    简而言之,我所需要的就是在最后一个测试用例的测试执行结束时删除数据库

    请你帮我做这个或者给我指个方向好吗


    感谢您在测试执行后使用[AssemblyCleanup]属性删除数据库。这些将在每个程序集执行一次。通过这种方式,我能够删除单元测试期间创建的数据库

    [AssemblyCleanup]
    public static void MyCleanUp()
    {
        //Your clean-up code
        // Read the connection from config file
        //Drop the database
    }
    

    如果SSDT的SQL单元测试类似于tSQLt,那么每个单元测试都在SQL事务中运行,并且在测试结束时回滚事务。在这种情况下,您将无法从测试中删除数据库,因为数据库正在连接和打开事务。那么我们可以使用自定义脚本吗?任何关于如何使用AssemblyCleanUp或ClassCleanUp的示例都会有所帮助。您完全可以删除数据库。你为什么不呢?错误消息?您必须强制断开已连接用户的连接-这很简单。我现在可以放弃它。我在下面提到了我的答案。谢谢你的建议