gpt4 book ai didi

nhibernate - 如何在NHibernate单元测试中管理 session ?

转载 作者:行者123 更新时间:2023-12-02 03:30:58 25 4
gpt4 key购买 nike

我不确定如何在我的nunit测试装置中管理 session 。

在以下测试装置中,我正在测试存储库。我的存储库构造函数接受一个I​​Session(因为我将在Web应用程序中按请求使用 session )。

在测试夹具设置中,我配置NHibernate并建立 session 工厂。在测试设置中,我为执行的每个测试创建一个干净的SQLite数据库。

    [TestFixture]
public class SimpleRepository_Fixture
{
private static ISessionFactory _sessionFactory;
private static Configuration _configuration;

[TestFixtureSetUp] // called before any tests in fixture are executed
public void TestFixtureSetUp() {
_configuration = new Configuration();
_configuration.Configure();
_configuration.AddAssembly(typeof(SimpleObject).Assembly);
_sessionFactory = _configuration.BuildSessionFactory();
}

[SetUp] // called before each test method is called
public void SetupContext() {
new SchemaExport(_configuration).Execute(true, true, false);
}

[Test]
public void Can_add_new_simpleobject()
{
var simpleObject = new SimpleObject() { Name = "Object 1" };

using (var session = _sessionFactory.OpenSession())
{
var repo = new SimpleObjectRepository(session);
repo.Save(simpleObject);
}

using (var session =_sessionFactory.OpenSession())
{
var repo = new SimpleObjectRepository(session);
var fromDb = repo.GetById(simpleObject.Id);

Assert.IsNotNull(fromDb);
Assert.AreNotSame(simpleObject, fromDb);
Assert.AreEqual(simpleObject.Name, fromDb.Name);
}
}
}

这是一个好方法还是应该以不同的方式处理 session ?

最佳答案

这看起来不错,但是我会创建一个基类。看看Ayende是如何做到的。

http://ayende.com/Blog/archive/2009/04/28/nhibernate-unit-testing.aspx

关于nhibernate - 如何在NHibernate单元测试中管理 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3007504/

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