Laissez-moi vous expliquer le scénario du problème. Ma tâche est de modifier la fonction compliquée testFunc() qui ressemble à ci-dessous.Activer le test unitaire d'une méthode en le rendant protégé
public String testFunc() {
String a = func1();
String b = func2(a);
String c = func3(b);
return c;
}
private String func1(){
return "hello";
}
private String func2(String p1){
return "a" + p1;
}
private String func3(String p1){
return "b" + p1;
}
Je modifie la méthode testFunc et inclue ma logique. Mais étant un bon développeur, je souhaite écrire des tests pour la logique supplémentaire que j'ai écrite. Mais je n'ai ni le temps ni la patience de tester toute la méthode. Je souhaite tester uniquement la logique que j'ai ajoutée.
public String testFunc() {
String a = func1();
String b = func2(a);
String c = func3(b);
String d = func4(c)
return d;
}
protected final String func4(String p1) {
return "1" + p1;
}
Est-il logique pour moi de faire la méthode FUNC4 comme définitive protégée de sorte que je puisse tester l'unité la logique à fond. Ou est-ce une mauvaise pratique de codage?
Pour l'anecdote: j'aurais donné une fusion des réponses de assylias et luciano. Se tourner vers la réflexion pour le test unitaire ne demande que des ennuis. Cela rend vos tests unitaires plus lents, et cela signifie que vos tests unitaires s'arrêtent dès que vous commencez à refactoriser et que vous changez de nom. Si vous voulez vraiment tester cette méthode par elle-même, faites-la protéger * ou * déplacez la fonctionnalité dans sa propre classe et testez-la séparément. – GhostCat