Я использую Fluent NHibernate для запуска тестов базы данных в памяти (MS Test) с использованием SQLite 1.0.66.0:[124 providedAnd then using this as example:
[TestClass]
public class MessagesControllerTests : InMemoryDatabaseTest
{
[TestMethod]
public void SQLite_should_have_all_handles_released()
{
using (var session = this.CreateSession())
{
// Don't even need to do anything.
}
}
}
После выполнения этого теста я пытаюсь Очистить
все решение. Результаты следующие:
C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (3607,9): предупреждение MSB3061: невозможно удалить файл «PathToProject \ bin \ Debug \ System.Data.SQLite.DLL ". Доступ к пути 'PathToProject \ bin \ Debug \ System.Data.SQLite.DLL' запрещен.
Моя первая мысль была в порядке, удалите DLL. Когда я пытаюсь это сделать, мне предлагается, что QTAgent32.exe
в настоящее время использует DLL. Я использовал Process Explorer, чтобы убедиться в этом. По какой-то причине средство запуска тестов ms сохраняет дескриптор библиотеки DLL. Я пробовал модифицировать метод Очистка
с некоторыми предложениями из другого вопроса , но он все равно не работал:
[TestCleanup]
public void Cleanup()
{
new SchemaExport(this.configuration).Drop(false, true);
sessionFactory.Close();
sessionFactory.Dispose();
SQLiteConnection.ClearAllPools();
GC.Collect();
}
Мне удалось воспроизвести это на 3 разных машинах . Мы будем очень признательны за любой известный метод решения этой проблемы.
Обновление : я устранил некоторые языковые затруднения. Фактическая конфигурация решения может быть в Debug / Relase. Однако выполнение тестов по сравнению с отладкой тестов вызывает разницу в сообщениях об ошибках.