Respawn 没有重置我的 SQL 服务器数据库

Respawn is not resetting my SQL Server database

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

public static Task ResetCheckpoint() => Checkpoint.Reset(ConfigurationManager.ConnectionStrings["TestConnection"].ConnectionString);

显示此错误消息:

Message: System.InvalidOperationException : Invalid operation. The connection is closed.

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

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

我已经弄明白了。问题是连接超时。我正在使用生产数据库的克隆作为测试数据库,并且有很多表有很多行,有些表有数百万个寄存器。所以我 运行 Respawn 在 SQL Server Management Studio 中手动生成的命令,花了 17 分钟才全部清除。现在,我将能够使用干净的数据库编写和 运行 我的测试,没有任何问题。

所以,这里的教训是:

  • 在运行重生Reset之前清除一个大数据库,或者将Checkoutclass的CommandTimeout属性设置为更高值。

我认为 Respawn 可以 return 更好地说明 Reset 中出了什么问题,也许我会发送一个拉取请求来解决这个问题。