Я нашел дискуссию о том , тестируешь ли ты частный метод информативно.
Я решил, что в некоторых классах я хочу иметь защищенные методы, но тестировать их. Некоторые из этих методов являются статическими и короткими. Поскольку большинство открытых методов используют их, я, вероятно, смогу безопасно удалить тесты позже. Но для того, чтобы начать с подхода TDD и избежать отладки, я действительно хочу проверить их.
Я думал о следующем:
- Метод Object, как указано в ответе, кажется излишним для этого.
- Начните с общедоступных методов и, когда покрытие кода обеспечивается тестами более высокого уровня, включите их защиту и удалите тесты.
- Наследуйте класс с тестируемым интерфейсом, делая защищенные методы общедоступными
Что является лучшей практикой? Есть ли еще что-нибудь?
Кажется, что JUnit автоматически меняет защищенные методы на общедоступные, но я не смотрел на это глубже. PHP не позволяет этого через отражение .