如何将回滚模式与 NHibernate 事务一起使用

本文关键字:事务 NHibernate 一起 模式 | 更新日期: 2023-09-27 17:56:27

我想使用回滚模式来测试我的服务。这些实际上是管理事务和处理所有存储库访问的逻辑服务,由 Winform UI 调用。存储库使用 NHibernate 进行数据库操作。

鉴于 NHibernate 不支持嵌套事务,因此在测试设置中开始事务并在拆卸中回滚是行不通的。中间执行的事务未回滚。

我发现的唯一方法是更改服务类,以便我可以将测试设置中创建的ITransaction注入到其中。但是这种方法将事务暴露给 UI 作为副作用,感觉就像更改我的实现只是为了测试。

有没有更好的方法来实现这一目标?欢迎任何建议或指示。

如何将回滚模式与 NHibernate 事务一起使用

我在以前的一份工作中遇到了同样的问题,老实说,情况非常棘手,我们最终通过拥有一个测试数据库来回避这个问题。

基本思想是,您有一些数据库的基线快照或基本设置脚本,您可以每天、每小时或在测试运行时在测试服务器上运行这些脚本 - 无论何时运行。 我们处理它的方式是让 SetUp 方法通过调用脚本重置为基线;然后,我们将进行所有测试,并在拆解过程中第二次重置为基线(如果需要)。

您甚至可以将基线位置设置为参数,以便从 QA 中提取不应破坏任何内容的更改的基线,如果您正在测试更改,则可以提取本地基线。 总而言之,习惯起来有点尴尬,但它运行良好,并没有破坏我们的开发过程。