我有一些使用SQLite.Net-PCL作为后备存储的自动化测试。我发现不是使用实际文件,而是可以传入“:memory:”作为连接字符串的路径,以创建内存数据库,如下所示:
public class MyRepositoryService : SQLiteAsyncConnection
{
public MyRepositoryService()
: base(() => new SQLiteConnectionWithLock(
new SQLitePlatformGeneric(),
new SQLiteConnectionString(
":memory:",
false)
))
{
}
}
令我惊讶的是,这比使用常规文件要慢得多。在内存中,文件中需要大约100毫秒的测试需要1分钟以上。为什么呢?
不仅如此,当我切换到内存数据库时,我的多个测试突然开始失败 - 大多数似乎与从未创建的表有关
我真的被迫使用基于文件的数据库进行单元测试吗?
答案 0 :(得分:0)
连接关闭时内存数据库消失。
因此,每个测试都会创建一个新数据库,并且必须重新创建所有表。