Per testare un metodo protetto usando junit e mockito, nella classe di test (la classe usata per testare il metodo), creare una “classe figlia” che estende la classe protagonista e semplicemente sovrascrive il metodo protagonista per renderlo pubblico in modo da dare accesso al metodo alla classe di test, e poi scrivere test contro questa classe figlia.
Per risolvere questo problema, l’affermazione del problema è che la classe di test non ha accesso al metodo protetto e quindi lo sviluppatore non è in grado di scrivere test per validare il metodo protetto.
La soluzione meno che ottimale è quella di modificare il modificatore di accesso a public in modo da dare accesso alla classe di test a questo metodo. Questo è un ENORME compromesso con l’ideale di incapsulamento e il principio che un metodo dovrebbe avere la visibilità MINIMA di cui ha bisogno.
La soluzione qui è di fornire una classe surrogata che estende la classe protagonista e il cui unico scopo è di sovrascrivere il metodo in questione e renderlo pubblico. Una volta fatto questo, la classe di test tratta questa classe come la classe protagonista e scrive le asserzioni su di essa.