Аргумент Исключения должны быть проверены модулем?
Я знаю, что этот вопрос очень похож на другие, которые были опубликованы ранее, но я хотел бы обсудить эту тему должным образом.
Считаете ли вы, что "очевидное" исключение должно быть модульным тестированием?
За очевидным исключением я имею в виду, например, исключения из-за пустых аргументов, пустых строк или отрицательных чисел в ситуациях, когда бизнес-логика нашего модуля делает нас очевидными, что эти исключения всегда будут выбрасываться в начале нашего метода (методов) перед любым другим операция.
Другими словами, я говорю об исключениях, которые должны быть сгенерированы после нарушения простейшей части классового контракта.
Спасибо за ваше мнение.
4 ответа
Абсолютно. Вы называете их "очевидными", но нет ничего очевидного в том, что вы не забыли проверить предварительные условия. На самом деле, большая часть кода, который я видел в своей карьере, не делает этот очевидный шаг, чтобы предотвратить беспорядок в дальнейшем.
Хотя вы часто видите это в библиотечном коде, который написан для публичного использования, повторного использования и т. Д., Большинство разработчиков не склоняется к тому, чтобы не забывать вставлять такие проверки в собственный код. В среде, управляемой тестами, размещение тестов для таких условий вынуждает разработчиков должным образом проверять входные параметры в своих открытых методах.
И давайте будем честными... если бы у меня была возможность написать еще один тест и увидеть зеленую полосу, я счастлив.:)
Я также всегда писал тест для таких "простых, очевидных" вещей, главным образом потому, что
- Соответствующий тест для этих "очевидных" ситуаций обычно пишется очень быстро, и поэтому я почти быстрее пишу его, а не думаю о том, стоит ли ставить тест или нет
- Простой контрольный пример лучше, чем отсутствие контрольного примера.
- Тест на будущие изменения. Тестирование гарантирует, что любой другой разработчик в моей команде не нарушит мой код во время рефакторинга / исправления ошибок и т. Д.
Я обычно включаю эти тесты. На самом деле это хорошее место для начала разработки, потому что если вы используете TDD, у вас может быть самый простой тест, чтобы начать писать производственный код, а если вы не используете TDD, у вас есть хороший проходной тест:)
Да, вам следует выполнить модульное тестирование даже самой простой логики в ваших методах получения и установки. Если этот код изменяется во время рефакторинга, вы хотите, чтобы защитная сеть модульного тестирования была на месте, чтобы не было ошибок. Выполнение тестов - это действительно быстрый способ найти эти ошибки, как только они будут сделаны.
Единственный раз, когда я не тестирую геттеры и сеттеры, это если они выполняют только простое присваивание или возвращают значение.