.net - 您会将什么放入存储库类(数据访问层)的单元测试中?

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

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

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

我想过

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

  • DAL 还有什么值得测试的吗?
    提前感谢您的回答!

    最佳答案

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

  • 保存新对象
  • 更改 -> 持久化 -> 恢复序列
  • 所有“查找”方法

  • 本质上,您测试以下内容的正确性:
  • 映射(即使您使用 fluent)
  • 标准
  • hql 或 sql 查询

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

    关于.net - 您会将什么放入存储库类(数据访问层)的单元测试中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7461326/

    相关文章:

    c# - 如何在初始化渲染器之前调用方法 [Wpf]

    c# - 代码契约真的有助于单元测试吗?

    nhibernate - 寻找有关嵌入式.NET数据库(例如db4o,NHibernate或RavenDB)的指南

    c# - NHibernate SysCache2 和查询缓存 - 无法避免 Select N+1?

    c# - 替换 ASP.net MVC 核心中的 DefaultModelBinder

    c# - 有没有办法判断哪个 EventLog 导致了 C# 中的 EntryWritten 事件?

    c# - 在 XML 父节点的开头添加一个节点

    c# - 如何在 Winform 应用程序中创建 Global.asax? - C#/.NET

    java - Play框架-测试POST Controller 方法

    .net - “dotnet test”未在 gitlab-runner 管道中找到 nunit 测试