我知道这个问题已经被问过很多次了,但我仍然没有找到一个好的答案,我对这个问题的看法略有不同。
我正在寻找一种对数据访问层进行单元测试的好方法,彻底地,但如果可能的话,原子地。我不想使用真正的数据库(或克隆),因为这将是一个集成测试,我希望我的测试尽可能保持轻量和简单。
DAL 是使用 NHibernate 实现的,而 DB 是 Microsoft SQL Server。不幸的是,一些 DAO 必须使用普通的旧 ADO.Net 来实现。更糟糕的是,一些 DAO 必须是存储过程的包装器。
基本上,我想测试的是 NHibernate 映射是否有意义,并且 DAO 从根本上有效。我想根据我的 NHibernate 映射在内存中创建一个数据库,模拟所有必需的存储过程,然后围绕这个数据库运行我的单元测试。使用我正在测试的 DAO 从内存数据库中的“模拟”插入和查询。
我的问题如下:
- 这是一个好方法吗?
- 有没有人有这种方法的经验并且可以分享见解?
- 是否有一些框架或库可以帮助我在内存数据库中创建模拟?
- 如何构建这些测试以适用于基于 NHibernate 的 Dao 和基于 ADO.Net 的 Dao?
- 如何为存储过程创建模拟?