J'utilise le plugin Cobertura Maven pour l'un de mes projets. Mais j'ai une question sur le rapport généré:
Quelle est la différence entre une couverture de ligne et une couverture?
J'utilise le plugin Cobertura Maven pour l'un de mes projets. Mais j'ai une question sur le rapport généré:
Quelle est la différence entre une couverture de ligne et une couverture?
La couverture en ligne que le nombre de déclarations que vous avez pris (une instruction est généralement une ligne de code, pas y compris les commentaires, les conditions, etc). Direction des couvertures vérifie si vous avez pris le vrai et le faux branche pour chaque conditionnelles (if, while, for). Vous aurez deux fois autant de branches que des instructions conditionnelles.
Pourquoi s'en faire? Prenons l'exemple:
public int getNameLength(boolean isCoolUser) {
User user = null;
if (isCoolUser) {
user = new John();
}
return user.getName().length();
}
Si vous appelez cette méthode avec isCoolUser
ensemble de true
, vous obtenez 100% l'état de la couverture. Ça sonne bien? NOPE, il va être un pointeur null si vous appelez, avec false
. Cependant, vous avez 50% de la branche de la couverture dans le premier cas, de sorte que vous pouvez le voir il y a quelque chose qui manque dans votre essai (et souvent, dans votre code).
Prenez ce code comme un exemple simplifié:
if(cond) {
line1();
line2();
line3();
line4();
} else {
line5();
}
Si votre test seulement des exercices de l' cond
pour être vrai et n'est jamais à l' else
direction générale, vous avez:
Aussi Cobertura rapport lui-même introduit quelques belles pop-up à l'aide des info-bulles lorsque l'en-tête de colonne est cliqué:
La Couverture en ligne - Le pourcentage de lignes exécutées par cet essai.
Direction générale de la Couverture - Le pourcentage de branches exécutée par cet essai.
if(cond){
//branch 1
}else{
//branch 2
}
Vous devez traiter toutes les lignes des branches 1 et 2 pour obtenir une couverture totale de LineCoverage et de BranchCoverage.
Si vous manquez quelque chose d'autre, vous obtiendrez la moitié de la couverture de la succursale. Si vous avez omis quelque chose dans le nombre de lignes dans if et else, vous obtiendrez BranchCoverage à 100% mais pas à 100% avec une couverture en ligne.
J'espère que cela t'aides.
Voir ci-dessous exemple
Exemple de couverture de ligne et de marque
Quelle est la couverture de ligne et de branche?
Couverture de lignes -> Pendant les tests, quel pourcentage de lignes ont été couvertes Couverture de branches-> Pendant la couverture de test, combien de branches ont été couvertes.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.