Очистка данных в базе данных SQLCompact между тестами MsUnit

Я играю с MVC2, Entity Framework и CTP4, используя только постоянство кода. Я создал несколько модульных тестов в MSUnit для своих доменных объектов, в том числе некоторые, чтобы увидеть, как постоянство работает в этой парадигме. Я использую Sql Server CE 4.0 для этих тестов. Это работает нормально, за исключением одной проблемы... кажется, что данные сохраняются между тестами в одном классе.

У меня есть предыдущий опыт использования Java, Hibernate Annotations и HSQLDB, и в этом случае БД создается и разрушается при каждом выполнении теста. Однако в SqlCompact у меня есть пара тестов, в которых используется один и тот же тестовый набор данных, и в результате я получаю нарушения ограничений, если я выполню их оба.

Я могу исправить это с помощью некоторых хаков, чтобы удалить таблицы / удалить данные явно в [TestCleanup] но как правильно обеспечить, чтобы в этом случае я использовал новую БД для каждого теста при использовании SQL Compact? Я уверен, что ответ прост, но я не могу найти его нигде. Благодарю.

РЕДАКТИРОВАТЬ: На данный момент я делаю это, что работает, но мне это не нравится. Лучшие идеи приветствуются:

    [TestCleanup]
    public void teardown()
    {
        mgr.Database.DeleteIfExists();
        mgr.Database.Create();
    }

1 ответ

Я думаю, что лучший подход - это добавить код, который у вас есть, в [TestInitialize], который вызывается перед выполнением каждого теста. Сравните это с [ClassInitialize], который вызывается один раз для всего прибора.

Я более знаком с NUnit и нашел эту таблицу полезной для сопоставления атрибутов NUnit с MSUnit http://blogs.msdn.com/b/nnaderi/archive/2007/02/01/mstest-vs-nunit-frameworks.aspx

Другие вопросы по тегам