Om een protected method te testen met behulp van junit en mockito, maak je in de test class (de class die gebruikt wordt om de methode te testen) een “child class” die de protagonist class uitbreidt en alleen de protagonist method overrides maakt om deze public te maken zodat de test class toegang krijgt tot de methode, en dan schrijf je tests tegen deze child class.
Om dat uit te splitsen, de probleemstelling is dat de test class geen toegang heeft tot de protected method en dat de ontwikkelaar dus geen tests kan schrijven om de protected method te valideren.
De minder dan optimale oplossing is om de access modifier te wijzigen in public, zodat de test class toegang krijgt tot deze methode. Dit is een HUGE compromis met het inkapselingsideaal en het principe dat een methode zo min mogelijk zichtbaarheid moet hebben als nodig is.
De oplossing hier is om een surrogaatklasse te maken die de hoofdklasse uitbreidt en waarvan het enige doel is om de methode in kwestie te overriden en openbaar te maken. Als dat eenmaal is gedaan, behandelt de testklasse deze klasse als de protagonistklasse en schrijft er asserties op.