Примечание модератора: здесь уже размещено 39 ответов (некоторые из них были удалены). Прежде чем опубликовать свой ответ, подумайте, можете ли вы добавить что-то значимое в обсуждение. Вы, скорее всего, просто повторяете то, что уже сказал кто-то еще.
Иногда мне приходится делать закрытый метод в классе public, чтобы написать для него несколько модульных тестов.
Обычно это происходит потому, что метод содержит логику, совместно используемую другими методами в классе, и это более удобно для проверки логики самостоятельно, или возможна другая причина, если я хочу проверить логику, используемую в синхронных потоках, не беспокоясь о проблемах потоков ,
Есть ли другие люди делают это, потому что мне не нравится это делать ?? Лично я считаю, что бонусы перевешивают проблемы с публикацией метода, который на самом деле не предоставляет никаких услуг вне класса ...
ОБНОВИТЬ
Спасибо всем за ответы, кажется, заинтересовал людей. Я думаю, что общее мнение о том, что тестирование должно происходить через общедоступный API, так как это единственный способ использовать класс, и я с этим согласен. Пара случаев, которые я упомянул выше, где я делал это выше, была необычной, и я подумал, что польза от нее того стоила.
Однако я могу видеть, как все говорят, что этого никогда не должно случиться. И, думая об этом немного больше, я думаю, что изменение вашего кода для размещения тестов - плохая идея - в конце концов, я полагаю, что тестирование - это своего рода инструмент поддержки, а изменение системы на «поддержку инструмента поддержки», если хотите, является явным явлением. плохая практика
@VisibileForTesting
аннотацию для создания таких методов - я рекомендую вам сделать это так, чтобы причина отсутствия метода была private
должным образом задокументирована.