Да, мы все еще называем это юнит-тестом, если функции вызывают другие функции.
Модульные тесты должны проверять публичное поведение класса, а не частные реализации. Как предполагает это тестирование Google на туалетной статье .
Если вы следуете правилам Чистого кода, тогда ваши функции не должны быть длиннее 4 строк кода. Это делает невозможным не тестировать другую приватную функцию с вашими юнит-тестами.
Почему бы вам не протестировать большинство закрытых функций отдельно? Потому что рефакторинг заставит вас обновлять все свои юнит-тесты реализации. Это будет разочаровывать, если у вас их много, в то время как публичное поведение не должно меняться во время рефакторинга, и, следовательно, тест не должен обновляться. Вы должны быть в состоянии проверить рядовых с их публичным родителем. Иногда это может стоить проверить сложные рядовые, но интересно, должны ли они быть отдельным классом самостоятельно?
Интеграционный тест :
Теперь, если функция является частью другого класса, она отличается. Тогда мы бы назвали это компонентным тестированием или интеграционным тестированием. Вы интегрируете несколько классов и проводите тестирование против них. Функция B будет зависеть от функции C. Чтобы выполнить модульное тестирование функции B, вы можете использовать внедрение зависимостей, чтобы изолировать функцию, которую вы тестируете, теперь это снова будет модульный тест.