Для тестов, которые действительно должны иметь доступ к закрытым членам, посмотрите, можете ли вы установить для защищенных членов закрытые члены, а затем подкласс Test (или оболочку для тестирования) подкласса «быть проверенным».Тем не менее, лучше тестировать на 100% через вызовы методов.
Тестирование должно предусматривать инкапсуляцию, поэтому вы действительно хотите выйти из бизнеса, рассматривая внутренние объекты объекта.Если вы нарушите инкапсуляцию в своей среде тестирования, вы потеряете все возможные преимущества сопровождения, связанные с инкапсуляцией.Проще говоря, если вы когда-нибудь попытаетесь «исправить» свой объект, вам придется переписать все ваши тесты, чтобы соответствовать новой «фиксированной» архитектуре.
Гораздо лучше, просто протестироватьчасть Объекта, которую увидит остальной мир, которая является внешней после того, как вы прочитали / установили / обработали все, что требуется.Таким образом, если вы когда-нибудь измените внутреннюю кишку, у вас будет набор тестов, которые уже «готовы к работе», чтобы убедиться, что ваши изменения не нарушают поведение объекта, если смотреть с остального мира.