2

[编辑(哈伦):重复]

我正在寻找一种将我的 NUnit 集成测试自动包装在数据库事务中的方法,以便在测试结束时自动回滚测试所做的更改。理想情况下,我会用自定义属性装饰某些测试方法,这会导致 NUnit 在测试开始时创建事务并在测试结束时回滚...我可以编写属性,但我不知道在哪里添加检查它。

测试数据库大小为 3GB,因此无法在每次测试开始时恢复它。我知道我可以在每个测试的主体中手动创建一个事务,但我正在寻找更优雅的东西。

也许有一个 IL 重写工具(也许是 AOP 框架)可以为我做到这一点?有人有什么建议吗?

4

3 回答 3

4

您不会在这里遇到嵌套事务的麻烦吗?据我了解,大多数数据库不支持事务中的事务。因此,如果被测代码完全使用事务(我认为如果您使用的是支持事务的数据库,那么您将使用它们),那么您真正想要的是嵌套事务,(我被告知)大多数数据库不直接支持。

于 2009-01-02T19:01:55.020 回答
3

有两个建议。第一种是使用 SetUp 和 TearDown 属性来启动事务并在完成后回滚。在 NUnit 中这样做的文档在这里:

http://www.nunit.org/index.php?p=setup&r=2.4.8

如果您不想使用它,我看到的另一个选项是在每个方法中对其进行编码,但在 using 语句中使用 TransactionScope 实例来创建事务(提供者应该自动登记)。

当然,您也可以在 SetUp 和 TearDown 方法中创建 TransactionScope 实例。

于 2009-01-02T18:59:31.093 回答
0

春网?

我来自 Java/JUnit 背景,但我知道在 Java 中你可以使用 Springframework 来做到这一点。

(您还必须从 ApplicationContext/BeanFactory 获取您的测试,以便对其应用 AOP)。

于 2009-01-02T18:58:29.177 回答