Это не идеально, но это действительно.
Чтобы процитировать пару людей, которые знают об этом больше меня, в Искусство модульного тестирования , Рой Ошеров говорит о том, что модульные тесты похожи на пользователя кода и, таким образом, предоставляют доступ специально для них это не обязательно плохо.
И в Эффективная работа с устаревшим кодом Майкл Фезерс обсуждает несколько таких приемов, отмечая, что создание защищенных для тестирования вещей может быть лучше, чем публичное, хотя это не обязательно лучший способ сделать что-то. , (На самом деле, я бы порекомендовал вам прочитать эту книгу, если вы работаете с устаревшим кодом, который звучит так, как вы).
Я думаю, это зависит от того, что это за код - если это публичный API, где люди могут использовать защищенный доступ, что означает, что он предназначен для переопределения, это, вероятно, плохая идея, но в типичном бизнес-приложении, где он довольно очевидно, не должно быть переопределено, я не думаю, что это проблема. Я, конечно, иногда делаю это в этой ситуации.