我有一个基于简单NHibernate
的应用程序,我在内存中对其进行单元测试SQLite
。每当测试失败时,例如由于重复的实体,单元测试会失败并出现错误“没有这样的表 TABLE_NAME”错误,而不是显示原始错误。
如果我切换到真实文件数据库,所有测试(通过或失败)都会正确评估。这怎么可能,我该如何纠正?
我有一个基于简单NHibernate
的应用程序,我在内存中对其进行单元测试SQLite
。每当测试失败时,例如由于重复的实体,单元测试会失败并出现错误“没有这样的表 TABLE_NAME”错误,而不是显示原始错误。
如果我切换到真实文件数据库,所有测试(通过或失败)都会正确评估。这怎么可能,我该如何纠正?
这通常是由于未将 SchemaExport 与内存数据库一起使用而引起的。Sqlite 内存数据库依赖于连接,因此每个连接都有自己的数据库。
new SchemaExport(config).Create(false, true); // creates database, fill it and throws away
代替
using (var session = sessionfactory.OpenSession())
{
new SchemaExport(config).Execute(false, true, false, session.Connection, null);
// use session in test
}