JUnit 4 и Suspend-on-Exception

Когда в моем коде генерируется неперехваченное исключение, я привык останавливать отладчик в операторе throwing, чтобы я мог просматривать локальные переменные и элементы всех объектов, задействованных в момент создания исключения. СIntelliJ Идея это может быть достигнуто путем перехода кБежать,Посмотреть точки останова, выбравТочки останова вкладка, проверкаЛюбое исключениеи убедившись, чтоПоймал исключение флажок снят, в то время какUncaught исключения флажок проверен. СЗатмение и сVisual Studio (для C #) это что-то другое, но в том же духе.

Способность вести себя так отладчиком чрезвычайно полезна; настолько полезный, что я соответствующим образом структурирую основной цикл моих программ: в версии выпуска основной цикл, конечно, встроен в try-catch-all; но в отладочной версии в главном цикле нет блока try-catch, поэтому любые исключения, которые нигде не перехвачены в моей программе, останутся необработанными, так что отладчик приостановит мою программу в тот момент, когда они будут выброшены.

Однако при тестировании моих классов Java с помощью JUnit у меня возникает проблема: отладчик не останавливается ни на каком исключении. Вместо этого происходит то, что не только ожидаемые, но и неожиданные исключения автоматически обнаруживаются, и мне дают посмертную трассировку стека исключений, чтобы попытаться разобраться в этом. Тот'не очень круто

Раньше я думал, что это происходит, потому что JUnit используетjava.lang.reflect.Method.invoke(), который перехватывает все исключения и преобразует их вTargetInvocationExceptions, но затем я написал свой собственный бегун JUnit, который лично знает мой тестовый класс и напрямую вызывает его методы безMethod.invoke()и проблема сохраняется. Это означает, что проблема лежит высоко в ядре JUnit.

Итак, у кого-нибудь еще есть такая же проблема? Кто-нибудь знает решение, позволяющее отладчику приостанавливать выполнение программы при непредвиденных исключениях во время тестирования с помощью JUnit?

Связанный (без ответа) вопрос:Приостановить выполнение необработанных исключений времени выполнения в тестовом средстве Eclipse Junit

Связанный (без ответа) вопрос:Как взломать отладчик в тестовом примере jUnit?

Связанный (частично отвеченный) вопрос:Перерыв на исключение в Eclipse с помощью jUnit (Принятый ответ говорит, что "если вы отлаживаете единственный метод в jUnit, точки останова начинают работать. Если в jUnit отлажен целый класс или пакет, отладчик нет работа. ")

Ответы на вопрос(2)

Ваш ответ на вопрос