我们使用RedGate结合SQL (tSQLt)。为了进行单元测试,我们在每个数据库上都安装了框架。
有没有办法以这样一种方式使用tSQLt框架:您的单元测试和框架对象可以驻留在一个中心位置,然后可以由多个数据库使用?
我们还使用RedGate的SQL Source Control和TFS作为我们的存储库来跟踪模式更改。这些更改按照以下环境顺序进行升级:开发-->测试-->生产。
不用说,添加的框架和测试本身代表了现在我们数据库中的大量新SQL对象(表、存储过程等)。理想情况下,我们希望这些对象只驻留在开发和测试中,避免弄乱我们的生产数据库。我们可以跳过将tSQLt更改合并到生产环境中,但这样我们就会在测试环境的源代码控制中保留未合并的更改,直到时间结束。
对解决这个问题有什么想法吗?
发布于 2016-05-30 22:27:50
在使用SQL Source Control管理数据库更改时,签入tSQLt测试是正确的做法。如果您希望确保这些更改不会推送到试运行或生产环境,则需要确保用于推送更改的工具不包括tSQLt测试。如果您使用Redgate SQL Compare来完成此操作,请使用“忽略tSQLt框架和测试”选项。有关详细说明,请参阅product documentation。如果你使用的是不同的工具或过程,请发表评论,我会修改这个答案。
发布于 2016-04-27 02:56:27
目前还没有办法在单独的数据库中安装tSQLt。我已经开始了使tSQLt数据库不可知的过程,但这基本上是一次完全的重写,所以需要一段时间。
同时,您可以从SQL源控制中排除tSQLt:https://redgate.uservoice.com/forums/39019-sql-source-control/suggestions/4901910-faster-way-to-exclude-all-tsqlt-content
发布于 2016-04-27 21:54:29
如果你仍然想要你的测试在源代码管理中,但又不想将它们提升到更高的环境中,这是Redgate的DLM Automation Suite的默认行为。您可以使用其中一个构建服务器插件(如TeamCity或TFS用于构建/测试,然后使用Octopus Deploy进行发布),或者在PowerShell中使用SQL Release完成所有这些工作。https://documentation.red-gate.com/display/SR1/SQL+Release+documentation
如果您有Redgate的SQL工具许可,那么您可能已经获得了自动化工具的许可(这是对以前许可的更改);http://www.red-gate.com/products/sql-development/sql-toolbelt/#automation
https://stackoverflow.com/questions/36873157
复制相似问题