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