Eu achei a discussão em Você testa o método privado informativo.
Eu decidi que, em algumas classes, quero ter métodos protegidos, mas testá-los. Alguns desses métodos são estáticos e curtos. Como a maioria dos métodos públicos os utiliza, provavelmente poderei remover os testes com segurança mais tarde. Mas, para começar com uma abordagem TDD e evitar a depuração, eu realmente quero testá-los.
Pensei no seguinte:
- Método Objeto conforme recomendado em uma resposta parece ser um exagero para isso.
- Comece com métodos públicos e quando a cobertura do código for fornecida por testes de nível superior, proteja-os e remova os testes.
- Herdar uma classe com uma interface testável tornando públicos métodos protegidos
Qual é a melhor prática? Mais alguma coisa?
Parece que o JUnit altera automaticamente os métodos protegidos para se tornar público, mas não tive uma visão mais aprofundada. O PHP não permite isso via reflexão .