【问题标题】:Is it possible to automate `EXEC tSQLt.RunAll` in SQL Agent?是否可以在 SQL 代理中自动执行“EXEC tSQLt.RunAll”?
【发布时间】: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


【解决方案1】:

正如 Martin Smith 指出的那样,如果任何测试失败或遇到异常,tSQLt 会在执行结束时引发错误。整个过程中的任何错误都会被捕获,因此您将始终获得完整的运行。

代理允许您捕获输出,因此您将能够看到失败的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 2012-02-22
    • 2015-04-23
    相关资源
    最近更新 更多