C#MSTest - 删除TestInitialize中的文件

时间:2016-07-28 21:20:47

标签: c# unit-testing mstest

当选择运行所有测试,并且[TestInitialize]方法中有逻辑删除文件时,第一次完成测试后的任何内容都会收到以下错误:

  

该进程无法访问该文件   ' C:\根\ VAR \ MonRequestGeneratorTests.sqlite'因为它正在被使用   通过另一个过程..

以下是Initialize方法:

[TestInitialize]
public override void Initialize()
{
    string sqliteFilePath = "myPath";
    if (File.Exists(sqliteFilePath)) {
        File.Delete(sqliteFilePath);
    }
}

如何通过测试解决这个问题?这是一个SQLite数据库,删除它的方法是删除文件。我需要在每次测试运行之前删除该文件。

1 个答案:

答案 0 :(得分:0)

这意味着sqlite文件在某些​​其他程序中打开(如某些SQL管理软件),或者在测试期间访问它后没有丢弃您的流。

每当您使用FileStream或类似内容打开文件时,请务必使用'使用'条款,以便稍后处理。

我建议的一件事是,不是在初始化期间删除数据,而是在拆卸期间删除它。假设您的工作区很干净,并确保在完成后保持干净。这样,如果某些测试没有处理它的FileStream,那么违规测试将失败,而不是之后的测试。