【问题标题】:C# MSTest - Delete file in TestInitializeC# MSTest - 在 TestInitialize 中删除文件
【发布时间】:2016-07-29 05:27:43
【问题描述】:

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

进程无法访问文件 'C:\root\var\MonRequestGeneratorTests.sqlite' 因为它正在被使用 由另一个进程..

这里是初始化方法:

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

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

【问题讨论】:

    标签: c# unit-testing mstest


    【解决方案1】:

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

    每当您使用 FileStream 或类似工具打开文件时,请确保在“使用”子句中执行此操作,以便稍后处理。

    我会推荐的一件事是,不要在初始化期间删除数据,而是在拆卸期间删除它。假设您的工作区是干净的,并确保在完成后保持干净。这样,如果某些测试没有处理它的 FileStream,则有问题的测试将失败,而不是之后的测试运行。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 2013-07-11
    相关资源
    最近更新 更多