Ho trovato la discussione su Testare il metodo privato informativo.
Ho deciso che in alcune classi voglio avere metodi protetti, ma testarli. Alcuni di questi metodi sono statici e brevi. Poiché la maggior parte dei metodi pubblici li utilizza, probabilmente sarò in grado di rimuovere in sicurezza i test in seguito. Ma per iniziare con un approccio TDD ed evitare il debug, voglio davvero testarli.
Ho pensato a quanto segue:
- Metodo Oggetto come consigliato in una risposta sembra essere eccessivo per questo.
- Inizia con metodi pubblici e quando la copertura del codice viene fornita da test di livello superiore, rendili protetti e rimuovi i test.
- Eredita una classe con un'interfaccia testabile che rende pubblici i metodi protetti
Qual è la migliore pratica? C'è niente altro?
Sembra che JUnit cambi automaticamente i metodi protetti per renderli pubblici, ma non ho avuto uno sguardo più approfondito. PHP non lo consente tramite la riflessione .