gpt4 book ai didi

nhibernate - SQLite/Fluent NHibernate 集成测试工具初始化在大数据 session 后不可重复

转载 作者:行者123 更新时间:2023-12-03 06:55:18 24 4
gpt4 key购买 nike

在我的主要数据集成测试工具之一中,我创建并使用 Fluent NHibernateSingleConnectionSessionSourceForSQLiteInMemoryTesting 来为每个测试获取一个新的 session 。每次测试后,我都会关闭连接、 session 和 session 工厂,并丢弃它们来自的嵌套 StructureMap 容器。这几乎适用于我能想到的任何简单的数据集成测试,包括利用 Fluent NHib 的 PersistenceSpecification 对象的测试。

当我测试应用程序冗长的数据库引导过程时,问题就开始了,该过程创建并保存了数千个域对象。这并不是说测试工具的第一次设置和拆卸失败,事实上,测试工具成功地引导了内存数据库,就像应用程序在生产环境中引导真实数据库一样。当使用新的 session 和 session 工厂在新的内存数据库上第二次引导数据库时,就会出现问题。

错误是:

NHibernate.StaleStateException : Unexpected row count: 0; expected: 1

行计数确实意外,被测应用程序正在查找的行应该在 session 中。您会看到,并不是上次集成测试中的任何数据都保留下来,而是由于某种原因 session 在数据库提升过程中停止了工作。我到处寻找可能保留旧 session 的地方,但找不到。

我已经在代码中搜索了staticsingleton对象,但相关代码附近没有任何对象。我有几个 StructureMap InstanceScope 单例,但它们会随着每次测试拆卸后丢失的每个嵌套容器而被丢弃。

我已经尝试了处理和关闭每个测试拆卸所涉及的每个对象的所有可能的变化,但在这个冗长的数据库 Bootstrap 上它仍然失败。我什至搞乱了 current_session_context_class 但无济于事。但非引导相关的数据库测试似乎工作正常。我开始没有选择,我可能不得不放弃冗长的数据库集成测试,转而进行基于 WatiN 的验收测试。

任何人都可以告诉我如何找出为什么我的一些 SingleConnectionSessionSourceForSQLiteInMemoryTesting 不可重复吗?

关于如何使 NHibernate SqlLite 数据库集成测试工具可重复用于大型数据 session ,有什么建议吗?

最佳答案

关于nhibernate - SQLite/Fluent NHibernate 集成测试工具初始化在大数据 session 后不可重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3030198/

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