Je tente de mesurer la couverture de test pour la première fois en utilisant gcov. Maintenant que je suis passé la courbe d'apprentissage initiale, les choses semblent bien se passer, sauf pour un petit hic. Je m'attends à ce que cela se résume à un manque de compréhension de ma part, alors j'espère que quelqu'un de familier avec gcov peut expliquer ce qui se passe.Pourquoi gcov signale-t-il une couverture de 0% sur un fichier d'en-tête pour une classe bien utilisée?
Le problème est que j'ai un fichier d'en-tête particulier montrant 0% de couverture. Cependant, le seul chose dans cet en-tête est une déclaration de classe pour une classe bien utilisée. En outre, le fichier d'implémentation pour la classe montre une couverture de 100%, et je peux pointer vers 5 tests différents où je sais que la classe est instanciée avec succès.
Alors pourquoi gcov signaler 0% de couverture sur la classe, et comment puis-je résoudre ce problème?
- modifier -
Comme lacqui a souligné ci-dessous, si l'en-tête n'a pas de code exécutable, il ne devrait pas être inclus dans le calcul de la couverture. Et en fait, parmi toutes mes classes, ce fichier d'en-tête particulier est le seul que gcov essaie de générer des informations de couverture. J'ai fait une comparaison ligne par ligne avec les autres en-têtes, et la plus grande différence que j'ai trouvée est que cet en-tête particulier n'a pas de constructeur ou de destructeur explicite, alors que les autres le font. Pour tenter de minimiser les différences entre les fichiers, j'ai ajouté un ctor et un dtor explicites à la classe de problème. Cependant, cela n'a fait aucune différence.
pouvez-vous nous montrer l'en-tête? – user44511