Это неправильный подход с точки зрения модульного тестирования. Вы должны протестировать только открытый интерфейс и убедиться, что он ведет себя так, как ожидалось, вам не нужно заботиться о деталях реализации, таких как private / protected. Так что есть либо:
- методы / свойства, которые вы собираетесь проверить, действительно должны быть общедоступными ИЛИ
- Ваш тестовый пример / конкретная реализация теста неверны
EDIT:
Иногда при написании модульных тестов для унаследованного кода, который вы не можете изменить, вы можете быть вынуждены получить доступ к защищенным элементам, в этом случае решением может быть создание оболочки , которая предоставляет внутреннее / открытое свойство / метод для защищенный доступ.
И что интересно, вы пометили вопрос тегом TDD , попробуйте представить, как вы сможете получить доступ к деталям реализации в модульных тестах, когда у вас еще нет реализации? Вот как работает TDD - у вас есть интерфейсы и вы начинаете писать модульные тесты до того, как реализация будет завершена.