2010-04-27 94 views
1

我在我的SQL Server 2005数据库中的表上有一个INSTEAD OF触发器,用于检查几个传入值。如果传入值无效,则会引发错误并且事务回滚。否则插入记录。使用TSQLUnit测试INSTEAD OF触发器

我想包含此触发器的TSQLUnit测试,其中如果插入了无效值,让事务回滚就是测试的成功结果。我已经创建了一个测试过程来执行此操作,但回滚事务会中止整个测试套件的执行。

有没有人有过这方面的成功?如果是这样,你是如何做到的?

如果TSQLUnit不可行,那么如何测试触发器?还是你测试他们呢?

回答

0

我不知道它是TSQLUnit还是SQL的标准行为。

在SQL Server 2000中触发异常,早期是batch aborting上ROLLBACK因为@@TRANCOUNT = 0

用try/catch语句在SQL Server 2005中的行为的变化和客户应正确处理它。说这个,我也会把外线电话包裹在TRY/CATCH中。

建议:

  • 检查之前和之后的数据的状态,看看你有什么
  • 使用存储过程(这是你反正做什么)
  • 使用TRY/CATCH
0

还有另一个称为TST http://tst.codeplex.com/的TSQL单元测试框架,它被认为允许测试代码拥有自己的事务。来自TST文档:

“当测试代码具有自己的事务时,TST使用可靠的方法检测其自身回滚机制变得无效的情况。可以在测试,套件或全局级别禁用TST回滚“。

我还没有使用过这个框架,但是我在研究这个主题时遇到了它(和你的问题)。

相关问题