Зачем тестировать закрытые методы

Сегодня очередной день, когда я пишу тесты, и только начав писать тест я вижу, как сложность понимания теста растет экспоненциально, т.е. написав тест на приватную функцию мне нужно было бы объявить и держать в уме 4 переменные, а написав тест на публичную функцию (которая дергает в глубину 2-4 приватные функции), в буфер уже все не влезает, и получается просто простыня моков на весь на весь класс, это боль уже во время начала написания тестов (я молчу про покрытия всего графа возможных вариантов и один глобальный провайдер с вариантами данных, которые тоже придется поддерживать в будущем).

Итого, делаем вывод:

1. Когда вы тестируете приватные методы, вы облегчаете поддержку приватных методов и поддержку тестов на приватные методы (все просто и лаконично).

2. Когда вы тестируете публичный метод, который ходит на 2 или больше уровня вниз по графу вызовов, то написание кода на такой публичный метод становится головной болью, входящие условия растут, кол-во моков внешних зависимостей класса начинает удивлять, о поддержке тестов такого кода можно уже забыть (я промолчу про if-ы которые там могут быть), это ад разработчика.

3. Часто, нет причины выносить 2-4 приватных метода в отдельный класс, это обязанность текущего класса и агрегация тут лишние действия (было бы больше - согласился бы).

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


17.03.2010 14:45

Комментарии

PRIVET
Dav | 30.10.2011 16:59
Неплохо!
Тестер | 01.11.2011 13:28