Um eine geschützte Methode mit Junit und Mockito zu testen, erstellen Sie in der Testklasse (der Klasse, die zum Testen der Methode verwendet wird) eine „Kindklasse“, die die Protagonistenklasse erweitert und die Protagonistenmethode lediglich überschreibt, um sie öffentlich zu machen, damit die Testklasse Zugriff auf die Methode erhält, und schreiben Sie dann Tests gegen diese Kindklasse.
Das Problem besteht darin, dass die Testklasse keinen Zugriff auf die geschützte Methode hat und der Entwickler daher keine Tests schreiben kann, um die geschützte Methode zu überprüfen.
Die suboptimale Lösung besteht darin, den Zugriffsmodifikator auf public zu ändern, um der Testklasse Zugriff auf diese Methode zu geben. Das ist ein GROSSER Kompromiss zum Ideal der Kapselung und dem Grundsatz, dass eine Methode die GERINGSTE Sichtbarkeit haben sollte, die sie benötigt.
Die Lösung hier ist, eine Surrogatklasse bereitzustellen, die die Protagonistenklasse erweitert und deren einziger Zweck es ist, die betreffende Methode zu überschreiben und sie öffentlich zu machen. Sobald das geschehen ist, behandelt die Testklasse diese Klasse als die Protagonistenklasse und schreibt Assertions auf sie.