Pour tester une méthode protégée à l’aide de junit et de mockito, dans la classe de test (la classe utilisée pour tester la méthode), créer une « classe enfant » qui étend la classe protagoniste et se contente de surcharger la méthode protagoniste pour la rendre publique afin de donner accès à la méthode à la classe de test, puis écrire des tests contre cette classe enfant.
Pour décomposer cela, l’énoncé du problème est que la classe de test n’a pas accès à la méthode protégée et donc le développeur est incapable d’écrire des tests pour valider la méthode protégée.
La solution moins qu’optimale est de modifier le modificateur d’accès en public de façon à donner à la classe de test l’accès à cette méthode. Il s’agit là d’un ÉNORME compromis par rapport à l’idéal d’encapsulation et au principe selon lequel une méthode doit avoir le MOINS de visibilité dont elle a besoin.
La solution ici est de fournir une classe de substitution qui étend la classe protagoniste et dont le seul but est de surcharger la méthode en question et de la rendre publique. Une fois que c’est fait, la classe de test traite cette classe comme la classe protagoniste et écrit des assertions sur celle-ci.
La classe protagoniste est la classe de test.