Модульные тесты в VS2008 принудительно перестраивают все зависимости

Почему, когда я прохожу свои модульные тесты в VS2008 - используя run или debug - VS настаивает на пересоздании всех зависимостей тестового проекта, то есть проектов, которые я тестирую в модульных тестах?

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

У меня есть нормальные ссылки проекта в проекте модульного тестирования на мои другие проекты.

С благодарностью принимаются любые предложения, так как это замедляет нашу способность использовать TDD настолько эффективно, насколько это возможно.

Спасибо!

1 ответ

Решение

Хорошо, я нашел по крайней мере причину проблемы и несколько неудовлетворительный обходной путь для этого!!

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

Почему этот ВСЕГДА перекомпилируется? Это как-то связано с Entity Framework. Создайте пустой проект и добавьте к нему пустую модель EF - он ВСЕГДА будет перекомпилироваться, даже если вы его не меняли. Это приводит к тому, что любые зависимости перекомпилируются, предположительно из-за изменения метаданных сборки данных.

Обходной путь, который я нашел, состоит не в добавлении ссылки на проект, а в добавление прямой ссылки на сборку в сборку данных. Недостатком является то, что вы не можете, например, перейти к определению в VS2008, чтобы перейти непосредственно к типу, но, учитывая, что мы редко делаем это с этой конкретной сборкой, это не является большой проблемой.

Делая это, я сократил время сборки только для запуска одного модульного теста с ~20 секунд до ~7 секунд - что имеет огромное значение, когда вы пишете десятки модульных тестов каждый день!

Если у кого-то есть идеи относительно того, почему модели EF делают это, мне было бы очень интересно услышать...

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