Я делаю юнит-тестирование.
Я пытаюсь проверить одну функцию.
Я звоню из моего тестового компонента. Но если удаленная функция не может обработать исключение, то мой компонент тестера также получит исключение, я полагаю.
Так стоит ли мне беспокоиться о получении исключения в моем компоненте тестера?
Благодарю.
РЕДАКТИРОВАТЬ:
PS:
Сгенерировать ошибку - это хорошо, но только для других функций, а не для конечных пользователей, пока не появится последний вариант!
OMG Я написал цитату программирования!
Ответы:
Краткий ответ: НЕТ.
Не ловите исключения в модульных тестах. Вы проводите модульное тестирование, чтобы найти ошибки и ситуации, когда возникают исключения.
Структура модульного теста должна обрабатывать исключения в разумной манере. Большинство (если не все) платформ xUnit имеют конструкцию для ожидания определенных исключений, которые вы используете, когда хотите вызвать конкретное условие исключения в тестируемой системе, и проходят тестовый прогон, если ожидаемое исключение возникает, но терпит неудачу, если это не так.
источник
(В отличие от ответа Маккоттла) Длинный ответ: НЕТ ... большую часть времени
Когда вы говорите, что ожидаете, что тест вызовет определенное исключение, вы будете знать, когда ЛЮБАЯ строка в этом тесте вызывает это конкретное исключение.
Это не совсем то же самое, что знать, что тестируемый метод вызывает исключение.
Если ваш тест включает в себя настройку объекта или контекста (в рамках теста, а не в версии вашего фреймворка
SetUp
), вам может быть лучше обернуть одну строку, которую вы действительно хотите протестировать, в try / catch, возможно, с помощью помощника.Например,
а потом
Если этот тест не пройден, я знаю, что мой тестируемый метод выдал исключение, а не что-то в случайной установке.
(Вы должны попытаться избежать случайной настройки. Иногда легче иметь некоторый установочный код в тесте.)
источник
В общем, вы должны просто исключить исключение, и среда тестирования предоставит вам хороший отчет со всей необходимой информацией.
Но в методологии TDD мы должны следовать следующим шагам:
Когда вы выпускаете исключение, если ошибка ясна, тогда это нормально. Но иногда исключение является неясным или даже вводящим в заблуждение. Как вы могли бы позволить, чтобы это было в вашем коде (для вас позже, когда вы забудете, или для члена команды, который потеряет много времени на выяснение проблемы)? Так что моя политика такова: « Если необходимо четко указать на сбой, вам нужно перехватить исключение ».
источник