我们正在使用RedGate结合SQL Test(tSQLt)。为了进行单元测试,我们在每个数据库上安装框架。
有没有办法以这样的方式使用tSQLt框架,在这种方式中,您的单元测试和框架对象可以驻留在一个中心位置,然后可以被多个数据库使用?
我们还使用RedGate的SQL Source Control和TFS作为我们的存储库来跟踪架构变化。这些更改将按以下环境顺序进行升级:开发 - >测试 - >生产。
毋庸置疑,框架的添加与测试本身一起代表了我们数据库中现在的大量新SQL对象(表,存储过程等)。理想情况下,我们希望这些对象仅驻留在开发和测试中,并避免使我们的生产数据库混乱。我们可以跳过将tSQLt更改合并到Production,但之后我们会在Test环境的源代码控制中进行未更改的更改,直到时间结束。
有关解决此问题的任何想法?
答案 0 :(得分:2)
当您使用SQL Source Control来管理数据库更改时,检查tSQLt测试是正确的做法。如果您希望确保这些不会被推送到临时或生产,您需要确保用于推送更改的工具不包括tSQLt测试。如果您正在使用Redgate SQL Compare,请使用选项"忽略tSQLt框架和测试"。有关详细说明,请参阅product documentation。如果您使用的是其他工具或流程,请发表评论,我将修改此答案。
答案 1 :(得分:0)
目前无法在单独的数据库中安装tSQLt。我已经开始使tSQLt数据库不可知的过程,但这基本上是一个完整的重写,所以它需要一段时间。
与此同时,您可以从SQL源代码管理中排除tSQLt:https://redgate.uservoice.com/forums/39019-sql-source-control/suggestions/4901910-faster-way-to-exclude-all-tsqlt-content
答案 2 :(得分: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