【发布时间】:2011-05-16 12:00:30
【问题描述】:
我想使用the rollback pattern 来测试我的服务。这些实际上是管理事务和处理所有存储库访问的逻辑服务,由 Winform UI 调用。存储库使用 NHibernate 进行数据库操作。
鉴于NHibernate doesn't support nested transactions,在测试设置中开始事务并在拆除时回滚是行不通的。我在中间执行的事务没有回滚。
我发现的唯一方法是更改服务类,以便我可以将在测试设置中创建的ITransaction 注入其中。但是这种方法会将事务作为副作用暴露给 UI,感觉就像只是为了测试而更改我的实现。
有没有更好的方法来实现这一点?欢迎任何建议或指导。
【问题讨论】:
-
也许我没有正确理解,但是简单地使用 NHibernate 为您的测试提供的内存数据库有什么特别的问题吗?当您的数据库在测试脚本结束时过期时,您不必担心回滚测试。
-
感谢您的回答。这更像是一个集成测试,我想针对 Sybase Anywhere 数据库进行测试,它有一些怪癖。在单元测试中,我选择内存数据库。
-
哦,明白了。我在上一份工作中做过这样的事情——它可能不适合你的情况,但至少是这样。一会儿我打字。
标签: c# nhibernate testing transactions