Мне потребовался почти день, чтобы выяснить причину моего странного поведения юнит-теста: соединение с базой данных оставалось открытым или база данных не создавалась при каждом новом тесте. Я всюду искал корень причины: MSTest (без прав администратора или где рабочие копии файлов каким-то образом удалены?), SQL Server Express / CE (сбой входа в систему?), Unity (объекты не расположены?) Или Entity Framework (не правильно инициализация базы данных?). Оказалось, это EF. Большое спасибо за ответ!

ка сначала выполнить какое-то модульное тестирование с кодом EF 4.1. У меня есть моя живая БД (SQL Server) и моя БД модульного тестирования (Sql CE). После борьбы (и проигрыша) с EF, Sql CE 4.0 и поддержкой транзакций я решил, что самым простым способом запустить мой тест было:

Создать БДВыполнить тестУдалить DbПромыть и повторить

У меня есть функции [Setup] и [TearDown]:

[SetUp]
public void Init()
{
    System.Data.Entity.Database.SetInitializer(new MyTestContextInitializer());
    _dbContext = ContainerFactory.Container.GetInstance<IContext>();
    _testConnection = _dbContext.ConnectionString;
}

[TearDown]
public void Cleanup()
{
    _dbContext.Dispose();
    System.Data.Entity.Database.Delete(_testConnection);
}

Проблема состоит в том, что System.Data.Entity.Database.SetInitializer не вызывает MyTestContextInitializer после первого теста.

Следовательно, 2-й тест проваливается с:

System.Data.EntityException: основной поставщик не удалось открыть.
----> System.Data.SqlServerCe.SqlCeException: файл базы данных не найден. Проверьте путь к базе данных

TIA для любых указателей

Ответы на вопрос(3)

Ваш ответ на вопрос