Почему Visual Studio не прерывает исключения при отладке модульных тестов?
Когда я пытаюсь отладить unit test, который выходит из строя из-за необработанного исключения в моем коде, я ожидаю, что Visual Studio разобьется на необработанное исключение, чтобы я мог проверить код и изолировать проблему. Вместо этого среда IDE мгновенно выходит из режима отладки, и тест отображается как "Failed", поэтому я могу обратиться к трассировке стека результатов теста, чтобы найти проблему.
Я подтвердил, что среда IDE настроена на разрыв, когда генерируется любое исключение CLR, не обработанное пользователем. Я могу получить ожидаемое поведение только в том случае, если я сконфигурирую IDE на разрыв всех исключенных исключений. Это, конечно, делает обычную отладку PITA.
Мне повезло?
Ответы
Ответ 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]()