当选择运行所有测试,并且[TestInitialize]方法中有逻辑删除文件时,第一次完成测试后的任何内容都会收到以下错误:
该进程无法访问该文件 ' C:\根\ VAR \ MonRequestGeneratorTests.sqlite'因为它正在被使用 通过另一个过程..
以下是Initialize方法:
[TestInitialize]
public override void Initialize()
{
string sqliteFilePath = "myPath";
if (File.Exists(sqliteFilePath)) {
File.Delete(sqliteFilePath);
}
}
如何通过测试解决这个问题?这是一个SQLite数据库,删除它的方法是删除文件。我需要在每次测试运行之前删除该文件。
答案 0 :(得分:0)
这意味着sqlite文件在某些其他程序中打开(如某些SQL管理软件),或者在测试期间访问它后没有丢弃您的流。
每当您使用FileStream或类似内容打开文件时,请务必使用'使用'条款,以便稍后处理。
我建议的一件事是,不是在初始化期间删除数据,而是在拆卸期间删除它。假设您的工作区很干净,并确保在完成后保持干净。这样,如果某些测试没有处理它的FileStream,那么违规测试将失败,而不是之后的测试。