SQL 可能会导致 tSQLt 出现问题的功能

SQL Features that might cause problems for tSQLt

我们正在考虑使用 tSQLt 进行 SQL 服务器单元测试,但在这样做之前,我们需要了解我们是否会浪费时间尝试使用我们的设置。我问这个的原因是因为我们有两个数据库,其中一个是漂亮的 "normal"(这是我们的生产数据库),另一个是 "API" 数据库,它通过存储提供对该数据库的限制访问在您访问 API 数据库的用户帐户和生产数据库的模拟帐户之间 "flip" 的过程。生产数据库中的表不是直接访问的,而是通过同义词访问的。交易规定来自 API 数据库中的 "entry point" 存储过程。

我们希望能够测试两个主要内容;

(1) 当我们 "forget" 在构建之间正确设置安全访问时,我们可以 运行 在使用共享对象时遇到问题的对象安全权限。

(2) API 存储过程/函数。我认为我们可以相对独立地测试一些功能,但我看不出存储过程如何轻松工作。

Does tSQLt support security permission testing ?

间接地。您可以使用 ExpectException 和 ExpectNoException 功能来测试给定帐户是否有权访问特定对象。

Synonyms

据我所知,您仍然无法伪造指向远程对象的同义词。不过,你可能会更幸运地伪造观点。

Why does tSQLt require CLR permissions ?

如果您的意思是 TRUSTWORTY,则不再需要 (http://tsqlt.org/748/tsqlt-v1-0-5873-27393-release-notes/)。如果你的意思是 "Why does it require CLR at all",这是因为有些操作很难或不可能单独使用 T-SQL;看看早期的 tsqlunit 来进行一次勇敢的尝试。

Does the tSQLt "code" have to be installed on the database it's going to test against

是的。


我要补充的是,如果您正在测试两个数据库之间的交互,那么令人毛骨悚然的部门可能会说这不是 真正的 单位测试。编写一个普通的旧 NUnit/MSTest/whateverUnit 测试可能更容易。过去,我在 Nunit 和 Dapper(以 Whosebug 闻名)将轻量级数据库测试放在一起时运气不错。