Подтвердить что ты не робот

Visual Studio 2008 "случайно" висит на тестовом прогоне

Мы используем VS 2008 Team System с автоматизированным набором тестов, а при выполнении тестов тестовый узел "случайно" блокируется. Мне действительно нужно убить процесс VSTestHost и повторно запустить тесты, чтобы что-то произошло, иначе все тесты будут находиться в состоянии ожидания.

Кто-нибудь испытывает подобное поведение и знает об исправлении? У нас есть 3 разработчиков, которые испытывают такое же поведение.

4b9b3361

Ответ 1

Это может быть связано с непонятной ошибкой, которая приводит к зависанию модульных тестов, если только имя компьютера не является UPPERCASE. Сумасшедший, я знаю, но у меня была эта проблема, и исправление работало для меня.

Отчет об ошибках в MS Connect
Workaround на MS Connect
Статья в блоге TFS об этой проблеме
HowTo отредактируйте реестр, чтобы изменить имя вашего компьютера

Самый простой способ - настроить реестр. Вам нужно отредактировать два ключа:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ActiveComputerName
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ComputerName

Измените значение Имя_компьютера на верхний регистр в обоих ключах и перезапустите. Тесты волшебным образом работают.

Ответ 2

Когда вы говорите о блокировке, вы имеете в виду, что VS фактически висит, или тесты не выполняются?

Самый простой способ отслеживать, что происходит, - это посмотреть на свалку зависания. Если вы находитесь в Vista, просто щелкните правой кнопкой мыши процесс и выберите создание дампа памяти. Если вы находитесь в Windows XP и не имеете Инструменты отладки для Windows, вы можете получить дамп памяти, используя ntsd.exe. Вам потребуется идентификатор процесса, который вы можете получить из диспетчера задач, добавив столбец PID на вкладку "Процессы".

После этого запустите следующие команды:

ntsd -p <PID>
.dump C:\mydump.dmp

Затем вы можете либо проверить этот дамп, используя WinDBG и SOS, или если вы можете опубликовать дамп где-нибудь, я был бы рад принять Посмотрите на это.

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

Еще один вопрос: вы на VS2008 SP1?

Ответ 3

Я бы попробовал запустить тесты из командной строки, используя MSTest.exe. Это может помочь изолировать проблему с Visual Studio и, по крайней мере, дать вам некоторый способ успешного выполнения тестов.