【发布时间】:2018-01-19 19:32:31
【问题描述】:
我已经按照tSQLt 中的示例成功地为我的 SQL Server 数据库创建了单元和集成测试。我知道 Redgate 销售用于自动化 tSQLt 单元和集成测试的 DevOps 工具,但我没有那种钱。
我的免费想法是按计划运行 SQL 代理任务。使用命令EXEC tSQLt.RunAll; 创建 T-SQL 作业步骤非常简单。虽然我已将 SQL 代理配置为在作业步骤失败时向我发送电子邮件,但我不知道代理如何知道我在运行 EXEC tSQLt.RunAll; 步骤时是否有任何失败的测试并提醒我。
没有什么可以阻止我手动运行这些测试,但我真的很想将它们自动化,这样我就可以专注于其他事情。
有没有人能够做到这一点或使用 SQL 代理获得类似的结果?
【问题讨论】:
-
如果测试失败将引发错误,因此作业将出错,您可以使用正常的 SQL 代理错误警报。但是您如何部署更改?你能把它整合进去吗?
-
@MartinSmith -- SQL 代理按照您的描述工作。就我而言,它是作为用户提供不正确数据时的预警系统。它提示我创建更多的单元测试和转移到错误表的脚本。
-
您没有在生产中使用 tSQLt,@RandomHandle,是吗?您的“当用户提供不正确的数据时”让我有点担心。 tSQLt 擅长将被测对象与数据库的其余部分隔离开来。但这也意味着 tSQLt 在幕后做了一些可能在生产系统中“造成痛苦”的事情。
-
它不是传统的生产系统。这是一些非技术人员使用的内网网站。它也是一个永远不会完成的数据库,因为用户希望不断发展它。我知道我违反了其中一项规则,但我必须做点什么。也许“集成测试”不是正确的术语:我正在计划刷新期间测试真实数据记录,这会导致一个或多个“测试”失败并标记我调整系统。 (培训用户并不总是一种选择。)
-
所以“开发”发生在此服务器上未经测试?如果是这样,并且您不介意出现问题的风险,那么使用代理工作就足够了。但是感觉这发现问题有点晚了。
标签: sql-server ssms tsqlt