J'ai un enum switch plus ou moins comme ceci:
public static enum MyEnum {A, B}
public int foo(MyEnum value) {
switch(value) {
case(A): return calculateSomething();
case(B): return calculateSomethingElse();
}
throw new IllegalArgumentException("Ne sais pas comment gérer " + value);
}
et j'aimerais que toutes les lignes soient couvertes par les tests, mais comme le code est censé traiter toutes les possibilités, je ne peux pas fournir une valeur sans son instruction de cas correspondante dans le switch.
Étendre l'enum pour ajouter une valeur supplémentaire n'est pas possible, et simplement simuler la méthode equals pour renvoyer false
ne fonctionnera pas non plus car le bytecode généré utilise une table de saut en coulisses pour accéder au bon cas... J'ai donc pensé que peut-être une sorte de magie noire pourrait être réalisée avec PowerMock ou quelque chose.
Merci!
edit:
Comme je possède l'énumération, j'ai pensé que je pourrais simplement ajouter une méthode aux valeurs et ainsi éviter complètement le problème du switch; mais je laisse la question telle quelle car elle reste intéressante.