Aby przetestować chronioną metodę używając junit i mockito, w klasie testowej (klasa używana do testowania metody), utwórz „klasę dziecka”, która rozszerza klasę protagonisty i jedynie nadpisuje metodę protagonisty, aby uczynić ją publiczną, tak aby dać dostęp do metody klasie testowej, a następnie napisz testy przeciwko tej klasie dziecka.
Aby to przełamać, problem polega na tym, że klasa testowa nie ma dostępu do chronionej metody i stąd deweloper nie jest w stanie napisać testów sprawdzających poprawność chronionej metody.
Mniej niż optymalnym rozwiązaniem jest modyfikacja modyfikatora dostępu do metody na publiczny, tak aby dać klasie testowej dostęp do tej metody. Jest to OGROMNY kompromis z ideałem enkapsulacji i dogmatem, że metoda powinna mieć najmniejszą widoczność, jakiej potrzebuje.
Rozwiązaniem jest tutaj dostarczenie klasy zastępczej, która rozszerza klasę protagonisty i której jedynym celem jest nadpisanie danej metody i uczynienie jej publiczną. Gdy to zostanie zrobione, klasa testowa traktuje tę klasę jako klasę protagonisty i zapisuje na niej asercje.