Проблема модульного тестирования проекта silverlight с динамически загружаемым xaps - PullRequest
1 голос
/ 03 мая 2011

У нас есть проект Loader и основной проект. Основной проект - это то, что содержит все наши представления и модели представлений, которые нам необходимы для модульного тестирования. При тестировании моделей представлений мы хотим запустить загрузчик, как обычно, чтобы он правильно настраивал все необходимые службы. Для этого мы подумали, что можем создать тестовый загрузчик, который наследуется от загрузчика проектов Loader. Это активирует нашу навигационную службу и контейнер IOC, чтобы мы могли затем протестировать модели представлений.

Проблема, которую мы обнаружили, заключается в том, что мы наследуем загрузчик загрузчика и будем вызывать модели представлений непосредственно в наших модульных тестах. Нам нужна ссылка на проект как для загрузчика, так и для ядра. Это добавит Loader.dll и Core.dll в xap-файл тестовых проектов.

когда мы запускаем TestBootstrapper, который наследуется от Loader.Bootstrapper, проект Loader загружает core.xap и импортирует core.bootstrapper для его инициализации. однако, делая это, когда mef пытается импортировать core.bootstraper, он сопоставляет его с core.xap, который загружает загрузчик, и testproject.xap, который имеет ссылку на основной проект. Это приводит к сбою импорта, поскольку он уже был инициализирован.

Есть ли способ, которым мы все еще можем динамически загружать xaps, но не вызовет проблемы с перекрестными ссылками между проектами?

1 Ответ

1 голос
/ 03 мая 2011

Установка Copy Local в False на ссылке должна гарантировать, что MEF не пытается загрузить его дважды.

Я думаю, что это хорошо, что вы тестируете динамическую загрузку XAP, однако я думаю,по мере продолжения тестирования вы столкнетесь с другими проблемами.Я настоятельно рекомендую тестировать ваши модели ViewModel без необходимости выполнять полную динамическую загрузку XAP каждый раз, когда вам нужно запустить тест.Каждый ViewModel должен быть в состоянии быть изолированным.Если это довольно маленький проект, вы, вероятно, не будете чувствовать слишком много боли.Хотя, как только проект станет больше, время, необходимое для динамической загрузки XAP, станет больше, а время, необходимое для запуска тестов, будет увеличиваться.В любом случае, только мое предложение!

...