8 branches pour essayer avec des ressources - jacoco couverture possible?

J'ai un code qui utilise essayer avec des ressources et dans jacoco il arrive que seulement la moitié couvert. Toutes les lignes de code source sont au vert, mais j'ai un peu de jaune symbole me disant que seulement 4 des 8 branches sont couvertes.

8 branches pour essayer avec des ressources - jacoco couverture possible?

Je vais avoir du mal à déterminer ce que toutes les branches sont, et comment écrire du code qui les couvre. Trois endroits possibles jeter PipelineException. Ce sont createStageList(), processItem() et l'implicite close()

  1. De ne pas jeter de toutes les exceptions,
  2. lancer une exception de createStageList()
  3. lancer une exception de processItem()
  4. lancer une exception de close()
  5. lancer une exception de processItem() et close()

Je ne peux pas penser à un autre cas, mais je n'ai encore que 4 de 8 couverts.

Quelqu'un peut m'expliquer pourquoi il est 4 de 8 et est de toute façon il a frappé tous les 8 branches? Je ne suis pas habile avec les decyrpting/lecture/interprétation de byte code, mais peut-être que vous êtes... 🙂 j'ai déjà vu https://github.com/jacoco/jacoco/issues/82, mais ni lui, ni le problème c'références aider beaucoup (autres que notant que cela est dû à généré par le compilateur, blocs)

Hmm, juste que j'ai fini d'écrire cela, j'ai eu une pensée sur ce cas(s) peut ne pas être pas été testés par ce que je mentionne ci-dessus... je vais poster une réponse si j'ai bien compris. Je suis sûr que cette question et la réponse sera aider quelqu'un en tout cas.

EDIT: Nope, je n'ai pas à le trouver. Jeter RuntimeExceptions (non traités par le bloc catch) ne couvre pas toutes les branches plus

  • Pouvez-vous poster le classfile s'il vous plaît?
  • Non, je ne peux pas poster mon client code.
  • La meilleure couverture que j'ai réussi à atteindre avec Eclemma (Emma dans Eclipse) est "3 de 8 branches raté", mais Cobertura dans Jenkins alors encore ne montre que 4/8. Espérons que, bientôt, ces outils de couverture va gérer essayer-avec-les ressources correctement.
  • Notez que de nombreuses constructions qui JaCoCo ne peut pas couvrir entièrement, comme ceux-ci, sont destinés à vous aider à réduire le nombre de chemins possibles dans le code (et donc de faire des erreurs). En visant une couverture de 100% sur celles-ci est le plus souvent impossible, aussi il ne sera pas ajouter beaucoup à votre test de qualité (mais il coûte beaucoup d'effort).
InformationsquelleAutor Gus | 2013-06-27