Я понимаю вашу проблему, но лично я не думаю, что это полезно, если есть возможность изменить поведение по умолчанию F9 .
У вас есть несколько тестовых случаев, которые, как ожидается, вызовут исключения.(ПРИМЕЧАНИЕ: Я на самом деле думаю о тестах, которые проверяют конкретные исключения, когда вводятся неверные входные данные. Не обрабатываются исключения приложением .) И я согласен, что нет смысла предупреждать об этом в большинствеобстоятельства.Тем не менее, исключение в других тестовых случаях будет проблемой, о которой я хотел бы получать оповещения как можно быстрее.
Так что мой предпочтительный режим работы обычно состоит в том, чтобы уведомлять об исключениях.И иметь явный код в некоторых тестовых случаях, который явно отключает уведомление об исключениях только в контексте тестов, которые будут вызывать исключения производственного кода.
У меня есть метод, который очень хорошо работает для этого.
В тесте, который должен вызывать исключения, я пишу следующий код:
begin
TIDEDebugTools.DisableBreakOnExceptions;
try
//Test code ...
finally
TIDEDebugTools.EnableBreakOnExceptions;
end;
end;
Полагаю, вам нужен исходный код для этих двух методов?:)
unit IDEDebugTools;
interface
type
TIDEDebugTools = class(TObject)
public
class procedure DisableBreakOnExceptions;
class procedure EnableBreakOnExceptions;
end;
implementation
{ TIDEDebugTools }
class procedure TIDEDebugTools.DisableBreakOnExceptions;
begin
end;
class procedure TIDEDebugTools.EnableBreakOnExceptions;
begin
end;
end.
Где остальное вы спрашиваете?
Там нет ни одного - вот и все!
... но есть несколько инструкций, которым вы должны следовать:
- Добавьте точку останова к каждому методу.
- Редактируйте свойства точки останова.
- Выберите дополнительные параметры.
- Отключите «Прерывание»"option
- И включить опции" Игнорировать последующие исключения "и" Обрабатывать последующие исключения "для соответствующего соответствующего метода.
Это близко к jpfollenius ' Идея для параметров директивы компилятора.В нем также рассматривается вопрос Дэвида о том, как вы снова включаете эти исключения.Все, что вам нужно сделать, это отключить точки останова, чтобы снова сообщать обо всех исключениях.
Дополнительные мысли:
Вы упоминаете:
Некоторые тестовые коды генерируютисключения, которые обрабатываются приложением.
Если ваше приложение обрабатывает все эти исключения, то:
- Достаточно ли локализованы ваши тесты?Если вы тестируете такие большие функциональные блоки, эти тесты больше похожи на системные тесты, и их может быть очень сложно поддерживать.
- Вы слишком часто используете исключения для основной бизнес-обработки?
- Ваше приложение выполняет много неуместных исключений при проглатывании?
Мне кажется странным, что ваша формулировка предлагает "кучу исключений, о которых вы не слишком беспокоитесь, потому что они"'обработано' ".Многие люди ошибаются, думая, что они обрабатывают исключения , тогда как на самом деле они просто проглатывают их и скрывают корневые проблемы.