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

Почему Visual Studio не прерывает исключения при отладке модульных тестов?

Когда я пытаюсь отладить unit test, который выходит из строя из-за необработанного исключения в моем коде, я ожидаю, что Visual Studio разобьется на необработанное исключение, чтобы я мог проверить код и изолировать проблему. Вместо этого среда IDE мгновенно выходит из режима отладки, и тест отображается как "Failed", поэтому я могу обратиться к трассировке стека результатов теста, чтобы найти проблему.

Я подтвердил, что среда IDE настроена на разрыв, когда генерируется любое исключение CLR, не обработанное пользователем. Я могу получить ожидаемое поведение только в том случае, если я сконфигурирую IDE на разрыв всех исключенных исключений. Это, конечно, делает обычную отладку PITA.

Мне повезло?

4b9b3361

Ответ 1

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

Вместо этого вам нужно сломать брошенные исключения. Если вы комбинируете это с включением "Just My Code" (по умолчанию), вы должны получить поведение, которое вы ожидаете. Visual Studio будет ломаться только тогда, когда происходят исключения, вызванные вашим кодом.

Ответ 2

Для меня я использую VS 2010 и 2015, Перейти к: Инструменты, Параметры, Отладка, Общие: необходимо убедиться, что "Включить только мой код" и "Включить помощник по исключениям" должны быть проверены.

Ответ 3

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

Ответ 4

По умолчанию, даже если вы выполняете сборку отладки, MSTest не дает вам отладки (с точками перехвата и т.д.), если вы на самом деле не говорите ему явно "тесты отладки блока".

Он должен нарушить необработанные исключения в модульном тестировании, если вы находитесь в конфигурации отладки, и, вы запускаете тестирование модуля с помощью "Отладки" - то есть: используя Ctrl+R, Ctrl+A вместо Ctrl+R, A для запуска всех тестов. В окне тестирования есть меню "Запуск" и "Отладка" с параметрами.

Ответ 5

Это помогло мне:
Ctrl + Alt + E для меню "Исключения" → Нажмите Reset All
Перейдите к: Инструменты → Параметры → Отладка → Общие: вам нужно убедиться, что оба параметра "Включить только мой код" и "Включить помощника по устранению" отмечены.

Ответ 6

Установите Testdriven.NET и используйте "Test With → Debugger".

Ответ 7

Это вызвано тем, что тесты выполняются с использованием MSTest (Visual Studio используется просто как оболочка). MSTest будет маскировать эти возникающие исключения, и они никогда не всплывают в Visual Studio. Если вы запускаете тесты в режиме отладки, он должен работать.

Если вы щелкнете правой кнопкой мыши по тесту (ам) в Test View и выберете их для отладки, он должен выполнить код через IDE, а исключения должны соответствующим образом прерваться.

alt text