0

我正在开发使用 NHibernate 3 的项目,但代码非常混乱。我想做的是:

  • 将测试代码引入项目
  • 引入存储库模式 - 我在使用 Entity Framework 4 的项目中做到了,我很喜欢它,特别是有机会测试查询而不考虑使用的存储(我可以模拟内部存储并注入内存中的实现,如对象列表)
  • 由于当前 DAO 代码使用 CreateCriteria 方法并创建特定于 NHibernate 的查询,因此不可能用另一个替换 NHibernate 存储(或者至少我不知道如何在 List 实例上执行 NHibernate.ICriteria。所以我需要一种创建方法无论存储实现如何,都可以使用查询。

有没有办法实现它?

4

1 回答 1

0

这可能不是您正在寻找的。我们有两种测试:单元测试,它测试没有数据库的纯逻辑和数据库集成测试。

单元测试

我们有实现查询的类的接口。这样,域就没有对 NHibernate 的任何引用。在您的情况下,这可能是存储库。为它们编写简单而小的接口并模拟整个存储库。为此,您甚至不需要 NHibernate。这就是执着无知的美妙之处。

数据库集成测试

我们在内存中的Sqlite 数据库上运行 NHibernate 。通过这种方式,我们正在测试依赖于 NHibernate 的映射、查询和其他内容。

于 2012-05-21T11:57:57.030 回答