您将在存储库类(数据访问层)的单元测试中添加什么?

时间:2011-09-18 12:00:40

标签: .net unit-testing nhibernate data-access-layer iqueryable

我想为我的数据访问层编写一个单元测试,以确保一切正常。 问题是,我应该在测试中加入什么样的东西?

DAL是一个静态Repository类,隐藏底层(Fluent NHibernate)并通过IQueryable向公众公开内容。

我想过

  • CRUD(创建/检索/更新/删除)操作
  • 交易

还有其他值得测试的DAL吗? 提前感谢您的回答!

3 个答案:

答案 0 :(得分:12)

使用集成测试而不是单元测试来测试存储库实现。隔离存储库实现(模拟ORM)几乎是不可能的。请看一下这个answer。集成测试使用真实ORM结合真实或伪造(通常是内存中)数据库来执行以下操作:

  • 保存新对象
  • 更改 - >坚持 - >恢复序列
  • 所有'查找'方法

基本上你测试的正确性是:

  • 映射(即使你使用流利)
  • 标准
  • hql或sql查询

事务通常由应用程序层处理,而不是由存储库处理。您可能对this回答感兴趣。在存储库实现中封装IQueryable将使您的测试变得更加容易。

答案 1 :(得分:1)

  1. 需要测试正确的异常处理
  2. 数据库连接的超时参数
  3. 存储过程调用的超时参数
  4. 正确的输入参数映射。如果存储过程期望接收浮动但是 收到int。

答案 2 :(得分:1)

通常在DAL中你没有业务逻辑,只有普通的数据库访问代码,可能只有1-5行,所以没有太多要测试......

如果您确定要对其进行单元测试,那么我相信CRUD很好。模拟出NHibernate,提供假数据并测试假数据;)。

希望这会有所帮助;)