Dernière modification : 11/11/2022

Tester un constructeur privé

 

Tester un constructeur privé peut être un test unitaire intéressant, surtout si celui-ci réalise des actions sensibles ou pour avoir une couverture de code à 100%. Cependant, transformer un constructeur initialement privé en publique en dehors des tests unitaires dégrade l'application, pouvant créer des anomalies. Par conséquent, l'outil présenté ci-dessous n'est à utiliser que lors des tests unitaires.

 

Récupération d'une instance de la classe ayant un constructeur privé :

private  T setAccessibleConstructor(Class myClass) throws Exception {
    Constructor constructor = myClass.getDeclaredConstructor();
    constructor.setAccessible(true);
    return constructor.newInstance();
}

 

Récupération d'une instance de la classe ayant un constructeur privé avec Mockito :

private  T setAccessibleConstructor(Class myClass) throws Exception {
    Constructor constructor = myClass.getDeclaredConstructor();
    constructor.setAccessible(true);
    return Mockito.spy(constructor.newInstance());
}