tSQLt 值得信赖和 CLR 要求

Jus*_*ott 6 sql-server testing sqlclr tsqlt

tSQLt测试框架需要设置TRUSTWORTHY ON数据库,并启用SQL CLR服务器。

为什么需要这些?是否可以在没有 CLR 对象的情况下实现相同/相似的功能?

den*_*djr 7

以下功能完全作为 CLR 代码实现,如果没有 CLR,将特别困难(并且可能不可能)实现:

  • CaptureOuput:用于记录和验证打印到控制台的输出
  • SuppressOutput:在内部使用以帮助保持控制台清除因重命名对象(特别是在 FakeTable 中)而产生的警告
  • ResultSetFilter:捕获从产生多个结果集的存储过程产生的特定结果集所必需的
  • AssertResultSetsHaveSameMetaData:用于比较两个结果集的元数据
  • NewConnection:允许在新连接中执行任意 SQL 命令。当连接的某些属性必须不同时用于测试。(如果我没记错的话,这可能是今天值得信赖的唯一原因)。

除此之外,tSQLt 在内部使用 CLR 为非常大的字符串生成格式化输出,例如可以通过比较两个表生成的字符串;以及在重命名对象时生成新的对象名称(例如 FakeTable 或 SpyProcedure)。

可以想象,可以修改 tSQLt 以删除这些功能,并且仍然以其基本功能集运行(当然有一些限制)。然而,当我们展望 tSQLt 未来版本的内容时,很可能会在 CLR 中完成更多工作。


小智 6

不再需要 TRUSTWORTHY ON。请参阅发行说明:http : //tsqlt.org/748/tsqlt-v1-0-5873-27393-release-notes/