2017-10-03 2 views
2

Je commence à travailler avec Java et JUnit, et je suis confronté à un problème de compréhension des trucs et astuces concernant la couverture de code. Si je ne me trompe pas, l'objectif ultime des tests unitaires est de parvenir à une couverture de test de 100%.Comment faire face à la couverture des tests et aux lignes impossibles?

Voici donc le code que j'ai en ce moment:

// field is of type Field (from reflection) 

field.setAccessible(true); 
try { 
    field.get(instance); 
} catch (IllegalAccessException e) { 
    e.printStackTrace(); 
} 

Voici donc, vous pouvez voir que je ne peux pas accéder au bloc catch() à tout moment parce que je fais le terrain accessible uniquement sur en haut ...

Quel est le problème avec mon code? Comment puis-je obtenir un résultat de couverture de code de 100% lorsque cela se produit?

+0

Je ne sais pas si cela vous aidera, mais je changerais le bloc catch en 'throw new AssertionError();'. – shmosel

+1

100% de couverture de code est une pipe-rêve. Ce n'est réalisable que dans des exemples triviaux. – AJNeufeld

+0

La cible n'est pas 100%. Vous ne pouvez pas le faire sans vraiment jouer avec votre code. Au lieu de cela, vous faites de votre mieux. Comme une partie importante de votre code est la gestion des erreurs, certaines erreurs que vous pouvez tester et d'autres vous ne pouvez pas. Alors tu fais de ton mieux. –

Répondre

2

L'objectif n'est pas d'exécuter 100% de vos lignes de code. L'objectif est de tester 100% des besoins de votre système, ou plutôt 100% des scénarios couverts par vos exigences système.

Si le code ne joue aucun rôle pour répondre à une configuration système requise, vous devez envisager de le supprimer. Dans l'exemple que vous avez donné, où le code est requis par le fonctionnement de la langue, vous pouvez le laisser dedans; mais ne vous inquiétez pas du tout au fait que votre couverture de code signalée tombe en dessous de 100%. Rappelez-vous que le pourcentage de couverture de code n'est qu'une approximation de la valeur utile, qui est le «pourcentage de couverture de scénario» entièrement non mesurable.