tSQLt测试框架需要为数据库设置 TRUSTWORTHY ON,并为服务器启用 SQL CLR。
为什么需要这些?是否可以在没有 CLR 对象的情况下实现相同/相似的功能?
tSQLt测试框架需要为数据库设置 TRUSTWORTHY ON,并为服务器启用 SQL CLR。
为什么需要这些?是否可以在没有 CLR 对象的情况下实现相同/相似的功能?
以下功能完全作为 CLR 代码实现,如果没有 CLR,将特别困难(而且可能不可能):
除此之外,tSQLt 在内部使用 CLR 为非常大的字符串生成格式化输出,例如可以通过比较两个表生成的字符串;以及在重命名对象时生成新的对象名称(例如 FakeTable 或 SpyProcedure)。
可以想象,可以修改 tSQLt 以删除这些功能,并且仍然可以使用其基本功能集(当然有一些限制)。然而,当我们展望 tSQLt 的未来版本时,很可能在 CLR 中会做更多的事情。
不再需要 TRUSTWORTHY ON。请参阅发行说明: http ://tsqlt.org/748/tsqlt-v1-0-5873-27393-release-notes/
如果您想使用 tSQLt,您可能别无选择,只能启用 SQL CLR。
有一种方法可以通过创建非对称密钥来绕过将数据库设置为 TRUSTWORTHY ON 的要求 - 请参阅http://msdn.microsoft.com/en-us/library/ms345106.aspx。
如果这是不可接受的,还有其他不需要在数据库中创建对象的数据库单元测试工具 - 例如DbFit