Существует два случая:
- Закрытый метод вызывается открытым методом или закрытым методом, который вызывается открытым методом, или закрытым методом, который вызываетсязакрытый метод, который вызывается публичным методом или ... (вы поняли).В этом случае вам не нужно тестировать закрытый метод, потому что он уже протестирован через публичный метод.
- Закрытый метод никогда не вызывается публичным методом.В этом случае вам также не нужно тестировать его, вы можете просто удалить его, потому что он никогда не вызывается.
Итак, в обоих случаях вам просто не нужно тестировать его впервое место.
(Обратите внимание, что это немного сложнее, так как закрытый метод может быть вызван с помощью отражения или других средств. Но суть в том, что кто-то где-то вызывает закрытый метод, в этом случаеэто проверяется тем, кто-то или никто не вызывает закрытый метод, в этом случае это мертвый код.)
Если я могу сделать небольшую рекламу для разработки через тестирование: в TDD это на самом деле невозможнонепроверенные частные методы существуют.Единственный способ для внедрения частного метода в систему - извлечение из уже протестированного публичного метода.(На самом деле, в TDD для любого непроверенного кода невозможно существование, поэтому утверждение о невозможности существования непроверенных частных методов тривиально верно.)
В общем, частныйметоды обычно создаются путем извлечения их из открытого метода, который стал слишком большим или слишком сложным.Хорошая вещь в этом заключается в том, что Refactoring Extract Method обладает очень удобным свойством: как и все другие Refactorings, он не меняет внешне наблюдаемое поведение, но в отличие от многих других Refactorings, что влечет за собой довольно значительные изменения ввнутренняя логика (например, рефакторинг нулевого объекта или замена условного на полиморфизм рефакторинга), не также изменяет внутреннюю логику.Это просто перемешивает код.(Фактически, с хорошим оптимизирующим компилятором, таким как в Rubinius, IronRuby или JRuby, вызовы приватных методов, вероятно, будут встроены, так что фактически выполняемый код на 100% одинаков как до, так и после извлечения методов..)
Итак, если ваш код был протестирован до того, как вы перешли в закрытый метод, то он гарантированно будет протестирован и после того, как вы переместили его.