Windows SQLite 集成测试清理 ("unable to open database file")

Windows SQLite Integration Test Cleanup ("unable to open database file")

我为现有的 SQLite 应用程序添加了 2 个 C# 集成测试。每个测试都会创建一个数据库文件(使用 Guid 来保证唯一性)并对数据库执行一些操作。测试单独通过,但如果 运行 一个接一个地失败。第二个测试在尝试创建新的 SQLiteConnection 时失败,"unable to open database file".

我怀疑 SQLite 自己的临时文件有问题。总结一下我的问题是:我能做些什么让 SQLite 在测试结束后正确地整理自己吗

一些更多的细节,以防万一这些是相关的:

临时 SQLite 文件的存在是一个转移注意力的问题。我的代码的真正问题是我正在调用的 MS MobileServiceSQLLiteStore 包装器中的一行:

MobileServiceClient.EnsureFileExists(dbPath);

这最终解决为

if (!File.Exists(path)) File.Create(path);

正如 this Stack Overflow 回答指出的那样,File.Create() 将使文件处于锁定状态。所以我的解决方法是确保文件是空的,事先已解锁文件:

if (File.Exists(path)) File.Delete(path);
File.Create(path).Close();