Очистка данных в базе данных SQLCompact между тестами MsUnit - PullRequest
2 голосов
/ 03 декабря 2010

Я играю с 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 Ответ

0 голосов
/ 12 мая 2012

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

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

...