Ich versuche die Testabdeckung zum ersten Mal mit gcov zu messen. Jetzt, da ich die anfängliche Lernkurve hinter mir habe, scheinen die Dinge gut zu laufen, abgesehen von einem kleinen Haken. Ich erwarte, dass es auf mangelndes Verständnis von meiner Seite hinausläuft, also hoffe ich, dass jemand, der mit gcov vertraut ist, erklären kann, was vor sich geht.Warum meldet gcov 0% Deckung in einer Header-Datei für eine gut verwendete Klasse?
Das Problem ist, dass ich eine bestimmte Header-Datei mit 0% Abdeckung haben. Allerdings ist die nur Sache in diesem Header eine Klassendeklaration für eine gut verwendete Klasse.
Darüber hinaus zeigt die Implementierungsdatei für die Klasse 100% Abdeckung, und ich kann auf 5 verschiedene Tests zeigen, wo ich weiß, dass die Klasse erfolgreich instanziiert wird.
Warum sollte gcov 0% Berichterstattung über die Klasse melden, und wie kann ich das beheben?
- bearbeiten -
Wie lacqui unten ausgeführt, wenn der Header keinen ausführbaren Code hat, ist es nicht in Deckung Berechnungen einbezogen werden sollte. Und tatsächlich ist von allen meinen Klassen diese spezielle Header-Datei die einzige, für die gcov Abdeckungsinformationen erzeugt.
Ich habe einen zeilenweisen Vergleich mit den anderen Headern gemacht, und der größte Unterschied, den ich fand, war, dass dieser bestimmte Header keinen expliziten Konstruktor oder Destruktor hat, während die anderen dies tun. In einem Versuch, die Unterschiede zwischen den Dateien zu minimieren, fügte ich einen expliziten ctor und dtor zur Problemklasse hinzu. Dies machte jedoch keinen Unterschied.
können Sie uns den Header zeigen? – user44511