Ik wil unit tests schrijven met JUnit. Hiervoor maak ik voor het overzicht een aparte package met alle test classes.
De code die ik wil testen is een pakketje code dat ik geschreven heb, met de bedoeling dat andere gebruikers (mijn teamleden) deze in hun code kunnen importeren.
Hiervoor heb ik alle methodes die enkel intern in het programma gebruikt worden, op 'protected' gezet, zodat deze niet extern gezien worden. Dit doe ik om de interface wat overzichtelijker te maken voor externe gebruikers die dus enkel de voor hen benodigde klasses en methodes zien.
Hier zit nu ook meteen het probleem met de unit tests. Ik wil die protected methodes testen, maar dat gaat natuurlijk niet vanuit de aparte test package.
Ik ken wel een oplossing, namelijk door Java reflection de methode te extraheren uit de klasse, de access checking uit te schakelen voor deze methode, en dan deze uit te voeren.
Maar dat is nogal een omslachtige en naar mijn mening een niet al te propere manier.
Ik vermoed dat er geen andere methode is dan ofwel de methodes weer public te maken, of de test classes niet in een aparte package te zetten?