gpt4 book ai didi

c# - 使用 NHibernate 编写单元测试的最佳实践

转载 作者:搜寻专家 更新时间:2023-10-30 20:03:24 24 4
gpt4 key购买 nike

我是 NHibernate (+Fluent) 的新手,在构建我的代码以使其可测试时,我无法决定什么是最佳策略。我有一个简单的结构,包括一个域模型、将模型映射到数据库的映射,以及一些具有行为的类,这些行为将对模型类起作用并进行事务以更新和从数据库中读取数据。我还有更多关于此的内容,但这与这里无关。

现在,当涉及到单元测试时,对我来说似乎很自然的是向行为类注入(inject)东西,这样他们将获得用于测试的 SQLite 数据库,或者真实的数据库,但这是配置。这有意义吗?我无法决定注入(inject)的是什么

  • 我可以注入(inject) ISession,但我假设我想为每个 session 使用新 session ?如果是这样,我需要一些外部的东西来创建 session ,这可能只是解决问题?
  • 我可以注入(inject) SessionSource 吗?在这种情况下,行为类可以使用它自己创建 session 。但是,我看到 SessionSource 用于 BuildSchema - 我认为我只想做一次?
  • 我看到的第三个选项——也是我到目前为止所做的——是创建一个 SessionFactory,它为我创建一个 session 。使用它我可以添加一个 using 子句并在函数完成时处理 session 。我有一个 SessionFactory 接口(interface)和一个常规和一个单元测试实现。注入(inject)常​​规或单元测试实现,我得到了正确数据库的 session 。

我走在正确的轨道上吗?我应该如何构建我的代码以使用 NHibernate 为代码编写单元测试?我应该知道任何最佳实践吗?

最佳答案

您可能想查看 Ayende 的这篇博文: Nhibernate Unit Testing .他有一个测试基类,用内存数据库(sql lite)配置 session 。这似乎与您的第三个选项相似。

关于c# - 使用 NHibernate 编写单元测试的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1976037/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com