Respawn 没有重置我的 SQL Server 数据库

Mar*_*ves 3 c# sql-server integration-testing

我正在使用Respawn清理我的测试数据库,但是当此方法执行时:

public static Task ResetCheckpoint() => Checkpoint.Reset(ConfigurationManager.ConnectionStrings["TestConnection"].ConnectionString);
Run Code Online (Sandbox Code Playgroud)

显示此错误消息:

消息:System.InvalidOperationException:操作无效。连接已关闭。

我已经检查过返回的值 ConfigurationManager.ConnectionStrings["TestConnection"].ConnectionString,它是正确的。

我的集成测试结构基于Jimmy Bogard的这个示例项目:https://github.com/jbogard/ContosoUniversityDotNetCore-Pages,更具体地说,这两个类:

Mar*_*ves 5

我已经弄清楚了。问题是连接超时。我使用生产数据库中的克隆作为测试数据库,并且有许多表包含大量行,有些表包含数百万个寄存器。因此,我在 SQL Server Management Studio 中手动运行 Respawn 生成的命令,花了 17 分钟才将其全部清除。现在,我将能够使用干净的数据库编写和运行测试,不会出现任何问题。

所以,这里学到的教训是:

  • 在运行 Respawn 之前清除大数据库Reset,或者将类CommandTimeout的属性设置Checkout为更高的值。

我认为 Respawn 可以返回一个更好的信息来说明 中出现的问题Reset,也许我会发送一个 Pull 请求来解决这个问题。