Позвольте мне подойти к этому с другой стороны. Что происходит, когда вы разрабатываете нетривиальное приложение без юнит-тестов? Если у вас хороший отдел контроля качества, первое, что произойдет, это то, что вы обнаружите, что у вас есть большое количество сообщений о проблемах. Почему, потому что вы не проверяли то, что вы делали, и предполагали, что это сработает, а также потому, что вы не обращали особого внимания на требования, а ваше приложение не соответствует им. Упс обратно на чертежную доску переписать и исправить. Теперь вы внесли исправления и обнаружили целый ряд новых проблем, потому что у вас не было возможности проверить, что ваши исправления не повлияли ни на что другое, прежде чем вы переходите в QA. К сожалению, срок уже наступил, и менеджмент расстроен.
Ситуация ухудшается, если у вас нет хорошего отдела контроля качества, потому что тогда пользователи найдут ошибки, и не только это сделает вашего босса несчастным, это может поставить производственную среду на колени, и сотни или даже тысячи людей будут в пока вы исправляете ошибки, которые мешало бы модульному тестированию. Это НЕ хороший выбор карьеры.
Теперь предположим, что этот ковбойский подход продолжается годами? Теперь каждое изменение, даже тривиальное, кажется, вызывает новые неожиданные проблемы. Мало того, но многие вещи, которые вы хотели бы сделать, чтобы приложение работало лучше, вы не можете сделать, потому что они слишком рискованны или слишком дороги, или и то, и другое. Таким образом, вы добавляете патчи к патчам, делая систему все более запутанной, громоздкой и сложной в использовании.
Пользователи начинают подвергать сомнению ваши оценки времени, потому что они становятся все больше и больше, и им трудно объяснить, что система стала настолько сложным, сложно найти, где даже внести изменения, и еще сложнее, чтобы убедиться, что они этого не делают. не сломать что-то еще.
Я работал в таком месте, где после десяти лет разработки практически ничего, что мы хотели сделать, чтобы исправить реальные проблемы, не могло быть сделано, потому что мы не могли сказать, какая из сотен настроенных клиентских приложений сломается. Первоначальные разработчики были в значительной степени «юнит-тестами, нам не нужны никакие вонючие юнит-тесты». Все, кто следовал за ними, страдали благодаря своей близорукости.
Без модульных тестов программное обеспечение работает некорректно и занимает больше времени как для первоначальной разработки, так и для обслуживания. С какой стати вы не хотите проводить юнит-тесты? Время, потраченное на написание теста, будет намного меньше времени, которое вы потратили бы на исправление проблем, которые вы должны были найти ранее (чем раньше обнаружена ошибка, тем меньше времени требуется на ее устранение) и проблем, которых вы бы вообще избежали, написав тесты первое, которое дает лучшее понимание требований, прежде чем вы начнете кодировать.