2

我们将 RedGate 与 SQL 测试 (tSQLt) 结合使用。为了进行单元测试,我们在每个数据库上安装了框架。

有没有一种方法可以使用 tSQLt 框架,使您的单元测试和框架对象可以驻留在一个中央位置,然后可以由多个数据库使用?

我们还使用 RedGate 的 SQL Source Control 和 TFS 作为我们的存储库来跟踪架构更改。这些更改按以下环境顺序进行升级:开发 --> 测试 --> 生产。

不用说,框架的添加结合测试本身代表了我们数据库中现在大量的新 SQL 对象(表、存储过程等)。理想情况下,我们希望这些对象仅驻留在 Development 和 Test 中,并避免弄乱我们的生产数据库。我们可以跳过将 tSQLt 更改合并到生产环境中,但是在测试环境的源代码控制中直到时间结束,我们都会保留未合并的更改。

关于解决这个问题的任何想法?

4

3 回答 3

2

当您使用 SQL 源代码管理来管理数据库更改时,检查 tSQLt 测试是正确的做法。如果您想确保这些不会被推送到登台或生产,您需要确保用于推送更改的工具排除 tSQLt 测试。如果您为此使用 Redgate SQL 比较,请使用“忽略 tSQLt 框架和测试”选项。有关详细说明,请参阅产品文档。如果您使用不同的工具或流程,请发表评论,我会修改此答案。

于 2016-05-30T14:27:49.887 回答
1

目前无法将 tSQLt 安装在单独的数据库中。我已经开始了使 tSQLt 数据库不可知的过程,但这基本上是一个完整的重写,所以需要一段时间。

同时,您可以从 SQL 源代码控制中排除 tSQLt:https ://redgate.uservoice.com/forums/39019-sql-source-control/suggestions/4901910-faster-way-to-exclude-all-tsqlt-content

于 2016-04-26T18:56:27.210 回答
0

如果您仍然希望您的测试在源代码控制中但不想将它们提升到更高的环境,这是 Redgate 中的默认行为DLM Automation Suite。您可以使用其中一个构建服务器插件(例如 TeamCity 或 TFS 进行构建/测试,然后使用 Octopus Deploy 进行发布)或使用 SQL Release 在 PowerShell 中完成所有操作。https://documentation.red-gate.com/display/SR1/SQL+Release+documentation

如果您拥有 Redgate 的 SQL Toolbelt 的许可,您可能已经获得了自动化工具的许可(这是对先前许可的更改);http://www.red-gate.com/products/sql-development/sql-toolbelt/#automation

于 2016-04-27T13:54:29.413 回答