VSTestHost.exe перестал работать - не может запустить модульные тесты - PullRequest
5 голосов
/ 24 октября 2008

Система модульного тестирования Microsoft неожиданно забастовала.

Когда я пытаюсь запустить тесты в VS2008, я получаю диалоговое окно с сообщением «VSTestHost.exe перестал работать».

У меня установлена ​​Visual Studio Team System 2008 (версия 9.0.30729.1 SP) в Vista со всеми примененными обновлениями.

«Отчеты о проблемах и решения» предлагают мне «перейти на последнюю розничную версию Visual Studio Team Edition для тестировщиков программного обеспечения», что неправильно.

Я попытался перезагрузиться.
Я пробовал "devenv / resetuserdata"

Это не имеет значения.

Я бы хотел вернуться к MbUnit , основываясь на этой ерунде, но это не мой выбор.
Любые предложения о том, как это исправить?

Ответы [ 4 ]

7 голосов
/ 29 октября 2009

Обычно это происходит из-за чего-то неправильного в коде, такого как бесконечный цикл или циклическая ссылка.

У меня возникла та же проблема, и я понял, что мой код испортился, а тестовая среда просто защищала себя от моего кода, закрывая себя.

Ключевым для меня было то, что то же самое произошло с двумя разными средами тестирования. Так что это должен быть мой код.

1 голос
/ 17 ноября 2008

Важно отметить, что хотя сообщение об ошибке, объясняющее, что VSTestHost.exe перестал работать, было не очень описательным. В результатах теста есть ссылка с надписью «Тестовый прогон завершен» (или в вашем случае он сказал бы «Тестовый прогон не пройден»), при щелчке по нему вы увидите точное сообщение об ошибке, которое вызвало тестовый хост ошибка (исключение переполнения стека).

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

1 голос
/ 26 октября 2008

Я нашел проблему, о которой спрашивал, и это была моя вина. Я кодировал переполнение стека: я преобразовал некоторый код в метод расширения, переименовал его, чтобы он соответствовал методу расширения Linq, который он вызвал, и поэтому он просто вызвал его саморекурсивно.

Уроки, которые можно извлечь из этого:
1: «выбор» не нарушен . Я был слишком быстр, чтобы обвинить фреймворк из-за его плохой репутации.

2: Но у него действительно было патологически общее и полностью вводящее в заблуждение сообщение об ошибке.

В тех случаях, когда сообщение об ошибке является настолько плохим, хорошая техника отладки состоит в том, чтобы попытаться выяснить, что делает, а что не вызывает ошибку. В моем случае прорыв произошел, как только я заметил, что это не «тестовый прогон», который провалился, это были только прогоны, содержащие тесты базы данных Sql - тест предметного объекта и фиктивного репозитория мог выполняться просто отлично, поэтому пришлось быть что-то о коде, который он выполнял. И что отладчик вступит в тесты. По этим ужасным ошибкам я предположил, что это далеко не зашло.

0 голосов
/ 26 октября 2008

Вы пытались запустить ремонт в Visual Studio или даже сбросить заводские настройки?

Чтобы восстановить заводские настройки, запустите devenv / ResetSettings из окна запуска.

...