Вопрос проверяет понимание ответственности разработчика и различий между уровнями тестирования.
Да, разработчику нужно писать unit-тесты, даже если есть тестировщики и автотесты.
Unit-тесты проверяют код на самом низком уровне и позволяют ловить ошибки сразу.
Тестировщики и автотесты не заменяют проверки логики отдельных методов.
Это разные уровни контроля качества, а не взаимозаменяемые вещи.
Наличие тестировщиков и автотестов не освобождает разработчика от написания unit-тестов.
Unit-тесты тесно связаны с кодом и бизнес-логикой:
Разработчик лучше всех знает код
Понимает граничные случаи
Знает, где возможны ошибки
Unit-тесты пишутся во время разработки
Ошибка находится сразу
Не нужно ждать этапа тестирования
Автотесты и unit-тесты решают разные задачи:
Unit-тесты
Проверяют отдельные методы и классы
Работают быстро
Не зависят от инфраструктуры
Автотесты (UI, API)
Проверяют систему целиком
Медленнее выполняются
Сложнее в поддержке
Тестировщики:
Проверяют пользовательские сценарии
Ищут нестандартные кейсы
Контролируют общее качество продукта
Но они не проверяют каждый метод и каждую ветку логики.
Если метод неправильно обрабатывает null, unit-тест выявит это сразу:
@Test
void shouldThrowExceptionWhenInputIsNull() {
Service service = new Service();
assertThrows(IllegalArgumentException.class, () -> service.process(null));
}
Автотесты могут до этого просто не дойти.
Unit-тесты, автотесты и тестировщики дополняют друг друга.
Без unit-тестов качество кода и скорость разработки сильно падают.