由于我为每个MSTest测试复制数据库文件,是否会导致文件锁定问题? (使用DeploymentItem注释)

时间:2009-11-13 03:12:25

标签: visual-studio-2008 unit-testing sqlite mstest

背景

  • 我使用MSTest在VS2008中运行单元测试。
  • 我的项目有一个SqlLite数据库。
  • 我发现我需要安排将默认数据库文件复制到MSTest区域,以便测试能够找到它。我正在使用以下关于测试代码的注释来安排: [DeploymentItem( “database.db3”)]

问题

  • 当我通过VS2008立即运行“所有测试”时,我在其中一个测试中得到了下面提到的错误。当我单独进行这项测试时它会过得很好。
  • 我得到的错误是: “System.Data.SQLite.SQLiteException:数据库文件被锁定数据库被锁定
  • 再一次,当我运行测试时,仅通过这个问题它就可以正常工作了。通行证

问题

有关如何解决此问题的任何想法/建议?是因为我手动复制每个测试的数据库文件的方式(即每个测试我有一个上述注释)

完整测试示例:

/// <summary>
///A test for process
///</summary>
[TestMethod()]
[DeploymentItem("database.db3")]
public void processTest()
{
    Coordinator target = new Coordinator();
    target.MyConfig.clear_database();

    target.process();
}

由于

2 个答案:

答案 0 :(得分:1)

听起来像第一个运行的单元测试使数据库文件保持打开状态。务必关闭DB文件。

尝试在测试夹具中使用[TestInitialize()]方法复制/创建然后打开DB文件,同时使用[TestCleanup()]方法关闭然后删除DB文件。

答案 1 :(得分:0)

在您想要删除数据库文件之前调用静态方法SQLiteConnection.ClearAllPools()或SQLiteConnection.ClearPool()。