Аргумент Исключения должны быть проверены модулем?

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

Считаете ли вы, что "очевидное" исключение должно быть модульным тестированием?

За очевидным исключением я имею в виду, например, исключения из-за пустых аргументов, пустых строк или отрицательных чисел в ситуациях, когда бизнес-логика нашего модуля делает нас очевидными, что эти исключения всегда будут выбрасываться в начале нашего метода (методов) перед любым другим операция.

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

Спасибо за ваше мнение.

4 ответа

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

Хотя вы часто видите это в библиотечном коде, который написан для публичного использования, повторного использования и т. Д., Большинство разработчиков не склоняется к тому, чтобы не забывать вставлять такие проверки в собственный код. В среде, управляемой тестами, размещение тестов для таких условий вынуждает разработчиков должным образом проверять входные параметры в своих открытых методах.

И давайте будем честными... если бы у меня была возможность написать еще один тест и увидеть зеленую полосу, я счастлив.:)

Я также всегда писал тест для таких "простых, очевидных" вещей, главным образом потому, что

  • Соответствующий тест для этих "очевидных" ситуаций обычно пишется очень быстро, и поэтому я почти быстрее пишу его, а не думаю о том, стоит ли ставить тест или нет
  • Простой контрольный пример лучше, чем отсутствие контрольного примера.
  • Тест на будущие изменения. Тестирование гарантирует, что любой другой разработчик в моей команде не нарушит мой код во время рефакторинга / исправления ошибок и т. Д.

Я обычно включаю эти тесты. На самом деле это хорошее место для начала разработки, потому что если вы используете TDD, у вас может быть самый простой тест, чтобы начать писать производственный код, а если вы не используете TDD, у вас есть хороший проходной тест:)

Да, вам следует выполнить модульное тестирование даже самой простой логики в ваших методах получения и установки. Если этот код изменяется во время рефакторинга, вы хотите, чтобы защитная сеть модульного тестирования была на месте, чтобы не было ошибок. Выполнение тестов - это действительно быстрый способ найти эти ошибки, как только они будут сделаны.

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

Другие вопросы по тегам