У меня была похожая проблема при модульном тестировании кода Entity Framework с использованием базы данных SQLite, где каждый тест должен был использовать свежий экземпляр базы данных, поэтому мой метод [TestCleanup] выполнял File.Delete для базы данных, но был получить ту же ошибку «используется другим процессом».
Прежде чем я позвонил в File.Delete, мне пришлось добавить следующее, чтобы исправить мою проблему.
GC.Collect ();
GC.WaitForPendingFinalizers ();
[TestInitialize]
public void MyTestInitialize()
{
// Copies the embedded resource 'MyDatabase.db' to the Testing Directory
CommonTestFixture.UnpackFile("MyDatabase.db", this.GetType(), this.TestContext.TestDeploymentDir);
}
[TestCleanup]
public void MyTestCleanup()
{
// Adding the following two lines of code fixed the issue
GC.Collect();
GC.WaitForPendingFinalizers();
// Removes 'MyDatabase.db' from the testing directory.
File.Delete(Path.Combine(this.TestContext.TestDeploymentDir, "MyDatabase.db"));
}
[TestMethod]
public void GetVenueTest()
{
// CreateTestEntities() is a helper that initializes my entity framework DbContext
// with the correct connection string for the testing database.
using (var entityFrameworkContext = CreateTestEntities())
{
// Do whatever testing you want here:
bool result = entityFrameworkContext.TestSomething()
Assert.IsTrue(result);
}
}