#visual-studio-2010 #unit-testing
#visual-studio-2010 #модульное тестирование
Вопрос:
Недавно я столкнулся с проблемами при одновременном запуске всех своих модульных тестов.
Я могу отлаживать их и запускать свои тесты по отдельности без проблем, но при запуске их всех вместе тестовый запуск продолжает зависать на полпути.
Это происходит:
- «Запустите все тесты в решении»
- Первые тесты анализируются без проблем (хотя и медленнее, чем обычно)
- В какой-то момент он застревает. Ничего не завершается сбоем, никаких исключений, VS просто прекращает выполнение ожидающих тестов.
- При остановке тестового запуска он снова зависает, и мне нужно перезапустить VS, чтобы прервать тестовый запуск.
Обычно я ожидал бы ошибки в своем коде, но я не вносил никаких изменений в код, который проходит тестовый набор, с момента последнего успешного запуска теста. Единственное, что я сделал, это запустил мастер производительности — профилирование Cuncurrency.
Он всегда останавливает одно и то же место, при удалении некоторых тестов из запуска он останавливает новое место (все еще фактически без ввода каких-либо оставшихся тестов).
Я понятия не имею, что является причиной этого. Но, похоже, у меня проблема с настройкой VS, а не с ошибкой кода.
Есть предложения? Изменяет ли мастер производительности какие-либо настройки, которые могли повлиять на способ выполнения теста?
Сведения о системе: 64-разрядная версия Windows 7 Ultimate, Visual Studio 10 Premium
Ответ №1:
Это звучит как проблема параллелизма. Кажется, что один тест изменяет testenvironment таким образом, что другой тест переходит в тупик. При удалении некоторых тестов порядок выполнения тестов изменяется, а некоторые другие тесты застревают.
Итак, я бы поискал проблему параллелизма, касающуюся вашей тестовой среды / внешних зависимостей.
Комментарии:
1. мне кажется, что это ошибка / проблема параллелизма в devenv.exe (проблема с изоляцией процесса отсутствует) — основной поток зависает в ожидании блокировки (я подозреваю, связанной с отображением окна результатов тестирования), и ide умирает.
Ответ №2:
Я не могу толком объяснить, почему это работает, но это решило проблему!
Я изменил файл ‘.csproj’ на более раннюю версию в одном из проектов, который был в «контакте» с мастером производительности, и теперь мои тесты работают.
ТАКЖЕ имейте в виду, что Мастер повышения производительности в некоторых случаях может изменить конфигурации решения из режима ‘DEBUG’ в режим ‘RELEASE’. Это было не так для меня, но стало проблемой для некоторых моих коллег.