Мне интересно, является ли юнит-тестирование закрытыми методами хорошей практикой?
Обычно тестируется только публичный интерфейс.
Однако я обнаружил, что во время сложных вычислений, которые вызывают тонны различных приватных методов, легче сначала выполнить модульное тестирование приватных методов, а затем выполнить простой тест для метода открытого интерфейса.
В качестве примера, скажем, у вас есть аудиоплеер, и у вас есть функции:
void play(){ ... }
void pause(){ ... }
void seek(time t)
{
//All Private methods
checkIfValidTimeRange(...);
moveToFilePos(...);
fillBuffers(...);
}
Обычно я пишу модульные тесты для: checkIfValidTimeRange(...)
, moveToFilePos(...)
, fillBuffers(...)
.
Но я не уверен, является ли это хорошей практикой.