Accéder un membre classe private

Pour des raison de test, on peut avoir besoin d’accéder des membres de classe privé pour tester leur contenu. Il est possible de faire ça sans forcément ajouter des accesseurs “juste pour les tests” sur le classe testé.

public static <T> Object getPrivateMember(T testObject, String fieldName) {
	try {
		Field field = testObject.getClass().getDeclaredField(fieldName);
		field.setAccessible(true);
		return field.get(testObject);
	} catch (Exception e) {
		throw new RuntimeException(e);
	}
}

Et à l’usage :

List<TableDaoBuffer> bufferDAO = (List<TableDaoBuffer>) getPrivateMember(vpnResponseTimePacketPush, "bufferDAO");

bufferDAO est le nom de la variable private.

Remarque : Il est aussi possible de les setter.