Я пишу модульные тесты для некоторого моего кода и столкнулся со случаем, когда у меня есть объект с небольшим открытым интерфейсом, но сложными внутренними структурами, поскольку каждый открытый метод выполняет большое количество внутренних функций, включая зависимости от объекта. государство. Это делает методы внешнего интерфейса довольно сложными для модульного тестирования.
Мой первоначальный вопрос: должен ли я стремиться к модульному тестированию и этих внутренних функций, поскольку они проще и, следовательно, проще для написания тестов? Мое инстинктивное чувство говорит, что да, что приводит к последующему вопросу, если так, как бы я поступил так в C ++?
Варианты, которые я придумала, - изменить эти внутренние функции с закрытых на защищенные и использовать либо класс друга, либо наследование для доступа к этим внутренним функциям. Является ли это лучшим / единственным способом сделать это, сохранив некоторую семантику скрытия внутренних методов?