gpt4 book ai didi

unit-testing - NHibernate/Npgsql 在调试 UnitTest 时在 CreateSchema 期间抛出异常

转载 作者:行者123 更新时间:2023-12-01 05:40:33 24 4
gpt4 key购买 nike

我有两个 C# 项目,Model 和 ModelTest。模型由 ActiveRecord 对象(Hibernate 的包装器)组成。在 ModelTest 中,我创建了一个简单的单元测试:

[TestClass]
public class UnitTest1
{
[TestInitialize]
public void Init()
{
Model.Init();
Model.CreateSchema();
}

[TestMethod]
public void TestMethod1()
{
}
}

Model.Init() 使用 ActiveRecord 注册所有类型的程序集模型。
Model.CreateSchema() 包装了 ActiveRecordStarter.CreateSchema(),它调用了 NHibernate 的 CreateSchema()。

如果我运行单元测试,此代码工作正常,但如果我“调试”单元测试,它会失败。在 Debug模式下,CreateSchema() 发生异常:
NpgsqlException: 'ERROR: 42P01: table "user" does not exist'

该异常似乎是在 SQL 调用“删除表用户级联”期间引发的,如果在运行测试之前数据库为空,则显然会失败。我假设总是在创建新表之前发送 drop。

关于删除查询的结果,Npgsql 在 Debug模式下的行为是否有所不同?

最佳答案

我遇到了与 Tarnschaf 完全相同的问题 -- SchemaUpdate.Create(...)会失败,有问题的 sql 是 drop table "tablename" cascade这导致了上述相同的“表不存在”错误。

事实证明,其中一个项目引用了不再位于同一位置的 Nhibernate 相关程序集。我不确定为什么在清洁和重建解决方案时没有出现这种情况。从项目中删除所有引用并重新添加它们解决了问题(对我来说)。

只是张贴这个以防万一它可以帮助其他人。 Nhibernate 异常没有什么帮助。

关于unit-testing - NHibernate/Npgsql 在调试 UnitTest 时在 CreateSchema 期间抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5823942/

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