Изменение Схем базы данных и модульных тестов

Это было бы видом проблемы, которая могла бы быть лучше решена путем установки контейнера с декоратором, где можно явно изменить реализацию, декоратор направляет вызовы к... особенно, если Вы хотите заменить реализацию, что существующие компоненты (т.е. одиночные элементы) были введены, с которым мог бы существовать в течение времени жизни Вашего приложения.

Действительно потребность больше фона на том, чего Вы пытаетесь достигнуть.

Вот больше информации о регистрирующихся Декораторах с Виндзором .

6
задан Michael Lloyd Lee mlk 28 August 2009 в 10:47
поделиться

1 ответ

Я думаю, что ответ на этот вопрос состоит из двух этапов:

Существует только одно авторитетное определение схемы

Должно быть только одно определение того, как выглядит база данных. В обычных случаях я предпочитаю иметь сценарий SQL DDL, который определяет схему для базы данных.

Модульные тесты должны использовать то же авторитетное определение схемы базы данных, что и приложение, и оно должно создавать базу данных. на основе этого определения перед тестовым запуском и полностью удалите его снова после тестового запуска .

Тем не менее, инструменты могут не синхронизироваться со схемой, и вам нужно будет вручную обновить данные, созданные инструментом. Например, я использую Entity Framework для .NET, который автоматически создает классы на основе схемы базы данных. Когда я меняю схему, Мне нужно вручную указать моему инструменту обновить эти классы. Это больно, но я не знаю выхода из этого, если только инструменты не поддерживают автоматизацию.

Каждый тест должен начинаться с пустыми данными

Каждый тест должен начинаться с базы данных без каких-либо данных. Каждый тест должен заполнять только данными, необходимыми для выполнения теста, и когда это будет сделано, он должен снова очистить базу данных.

То, что вы сейчас делаете, звучит как анти-шаблон под названием General Fixture, где вы пытаетесь предварительно загрузить набор данных, который представляет как можно более широкий набор сценариев. Однако это очень затрудняет проверку взаимоисключающих условий, а также может привести к взаимозависимости тестов, если вы измените эти предварительно загруженные данные в некоторых тестах.

Это действительно хорошо объясняется в отличной книге Шаблоны тестов xUnit .

3
ответ дан 16 December 2019 в 21:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: