Тестирование кода в развернутых сборках GAC - PullRequest
2 голосов
/ 12 сентября 2010

Довольно часто у меня есть модульные тесты, использующие MSTest для кода, который находится в сборке развертывания GAC. Обычно на моей машине разработки у меня также есть версия кода, развернутая в GAC. Это приводит к проблеме при внесении изменений в тестируемый код, поскольку модульные тесты продолжают работать с развернутой сборкой GAC.

Итак, чтобы действительно протестировать измененный код, мне нужно повторно развернуть сборку в GAC перед запуском тестов. Это довольно подвержено ошибкам и не легко работать с. У кого-нибудь есть хорошее предположение о том, как обойти эту проблему? Я думаю, что простой запуск GACUtil или аналогичного в событии после сборки не является работоспособным решением, так как это может вызвать проблемы у коллег-разработчиков ...

Ответы [ 4 ]

4 голосов
/ 12 сентября 2010

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

Сборки следует размещать в GAC как часть процесса развертывания только на целевых машинах.

3 голосов
/ 21 марта 2012

Я нахожу это довольно раздражающим.Мой тестовый проект CLEARLY ссылается на PROJECT, а не на сборку GAC ... Я не уверен, является ли это процессом загрузки CLR, выбирающим GAC вместо локального каталога, или MSTest, указывающим предпочтение (я предполагаю, что MSTest необработка события разрешения сборки домена приложения, которое приводит к тому, что поведение по умолчанию сначала проверяет GAC.

Я согласен, что было бы идеально иметь отдельный сервер DEV и CI / Test ... но разработка для SharePoint DOES включает регулярную установку сборок в GAC (требуется в некоторых случаях) и принуждение разработчика отозвать / удалить код перед UNIT TESTING, просто чтобы убедиться, что в тестах используется правильная сборка.несколько хромает.

2 голосов
/ 12 сентября 2010

использовать другую версию сборки при внесении изменений

1 голос
/ 12 сентября 2010

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

Если вы хотите выполнить интеграционный тест со всем приложением или его частями, развернутыми на вашем компьютере, просто запишите сценарии двух вызовов gacutil, которые устанавливают сборки в GAC, запустите тесты, а затем очистите GAC.

...