Это было бы видом проблемы, которая могла бы быть лучше решена путем установки контейнера с декоратором, где можно явно изменить реализацию, декоратор направляет вызовы к... особенно, если Вы хотите заменить реализацию, что существующие компоненты (т.е. одиночные элементы) были введены, с которым мог бы существовать в течение времени жизни Вашего приложения.
Действительно потребность больше фона на том, чего Вы пытаетесь достигнуть.
Вот больше информации о регистрирующихся Декораторах с Виндзором .
Я думаю, что ответ на этот вопрос состоит из двух этапов:
Существует только одно авторитетное определение схемы
Должно быть только одно определение того, как выглядит база данных. В обычных случаях я предпочитаю иметь сценарий SQL DDL, который определяет схему для базы данных.
Модульные тесты должны использовать то же авторитетное определение схемы базы данных, что и приложение, и оно должно создавать базу данных. на основе этого определения перед тестовым запуском и полностью удалите его снова после тестового запуска .
Тем не менее, инструменты могут не синхронизироваться со схемой, и вам нужно будет вручную обновить данные, созданные инструментом. Например, я использую Entity Framework для .NET, который автоматически создает классы на основе схемы базы данных. Когда я меняю схему, Мне нужно вручную указать моему инструменту обновить эти классы. Это больно, но я не знаю выхода из этого, если только инструменты не поддерживают автоматизацию.
Каждый тест должен начинаться с пустыми данными
Каждый тест должен начинаться с базы данных без каких-либо данных. Каждый тест должен заполнять только данными, необходимыми для выполнения теста, и когда это будет сделано, он должен снова очистить базу данных.
То, что вы сейчас делаете, звучит как анти-шаблон под названием General Fixture, где вы пытаетесь предварительно загрузить набор данных, который представляет как можно более широкий набор сценариев. Однако это очень затрудняет проверку взаимоисключающих условий, а также может привести к взаимозависимости тестов, если вы измените эти предварительно загруженные данные в некоторых тестах.
Это действительно хорошо объясняется в отличной книге Шаблоны тестов xUnit .