在我看来,大多数人在使用NHibernate时,都是在内存中、进程中的数据库(如SQLite )上编写测试。我已经启动并运行了这个测试,但是我的第一个测试(使用NHibernate)总是需要3-4秒来执行。下一个测试运行得更快。
我使用FluentNhibernate进行映射,但获得的时间与XML映射文件大致相同。对我来说,3-4秒的延迟严重打乱了我的流程。
使用测试驱动开发和NHibernate的推荐方式是什么?
是否可以模拟ISession来对实际查询进行单元测试,或者只能在内存数据库中执行此操作?
发布于 2008-12-02 08:52:36
我使用存储库模式来执行数据库操作,并且每当我运行我的测试时,我只运行更高级别的测试,这些测试只是简单地模拟存储库(使用RhinoMocks)。
我有一套单独的测试来显式地测试存储库层和NHibernate映射。而这些通常不会像它们上面的业务和gui逻辑那样改变。
这样,我得到了非常快的UnitTests,而且不会访问DB,而且仍然是一个经过良好测试的DB层
发布于 2008-12-02 20:07:20
单元测试数据访问是不可能的,但您可以对其进行集成测试。我在一个独立于单元测试的项目中为我的数据访问创建了集成测试。只有当我在存储库、映射或数据库模式中更改了某些内容时,我才会运行(缓慢的)集成测试。因为集成测试没有与单元测试混合在一起,所以我每天仍然可以运行大约100次单元测试,而不会感到恼火。
发布于 2008-12-01 22:34:51
请参阅http://www.autumnofagile.net和http://www.summerofnhibernate.com
https://stackoverflow.com/questions/332468
复制相似问题