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

给定NHibernate doesn't support nested transactions,在测试设置中开始事务并在拆卸时回滚是行不通的。我之间执行的交易未回滚。

我发现的唯一方法是更改​​服务类,以便可以向其注入在测试设置中创建的ITransaction。但是此方法将交易作为副作用公开给UI,感觉就像只是为了测试而更改了我的实现。

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

最佳答案

我在以前的一份工作中遇到了同样的问题,老实说,情况是如此棘手,我们最终有了测试数据库来回避问题。

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

您甚至可以将基线位置设置为参数,这样就可以从质量检查中获取基线,以获取不会破坏任何内容的更改,如果要测试更改,则可以获取本地基线。总而言之,习惯它有点尴尬,但是它运行良好,并且不会拖延我们的开发过程。

关于c# - 如何在NHibernate事务中使用回滚模式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6017019/

10-14 16:00