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