Die traditionelle Linux- und Unix-Methode zum Ermitteln der Codeabdeckung besteht darin, gcov zum Generieren der Abdeckungskarte und lcov zum Verschönern der Ausgabe zu verwenden. Die Codeabdeckung misst, ob und wenn ja, wie oft eine Codezeile ausgeführt wird. Dies ist nützlich, um die Wirksamkeit Ihres Testcodes zu messen. Theoretisch sind Ihre Tests umso vollständiger, je mehr Zeilen „abgedeckt“ sind. Die Verbindung zwischen Codeabdeckung und Vollständigkeit der Tests kann jedoch schwach sein.
Codeabdeckungsdaten
Daten zur Codeabdeckung bestehen normalerweise aus zwei Teilen, der Zeilenabdeckung und der Funktionsabdeckung, die beide am einfachsten als Prozentsätze ausgedrückt werden können. Diese Zahlen sind für einzelne Unit-Tests leicht verständlich. Beim Testen einer einzelnen Funktion oder einer Methode innerhalb eines Objekts dient die Gesamtzahl der Funktionen und Zeilen in der geladenen Datei als Nenner für die Prozentberechnung. Wenn Sie also Ihre Tests für ein einzelnes Modul auf mehrere Dateien verteilen, ist die Abdeckung der Einheitentests für jeden einzelnen Test gering. Die Aggregation aller Abdeckungszahlen aus jedem einzelnen Test ergibt das vollständige Abdeckungsbild für diese Datei.
Wenn Sie auf einen Fehler wie unten gezeigt stoßen:
lcov: command not found
Sie können versuchen, das folgende Paket gemäß Ihrer Wahl der Distribution zu installieren.
Verteilung | Befehl |
---|---|
OS X | brew install lcov |
Debian | apt-get install lcov |
Ubuntu | apt-get install lcov |
Kali-Linux | apt-get install lcov |
Fedora | dnf install lcov |
Raspbian | apt-get install lcov |
Abschließende Gedanken
Das Generieren und Anzeigen von Informationen zur Codeabdeckung ist für Unit-Tests von entscheidender Bedeutung und für aggregierte Integrationstests wichtig. Während Code-Coverage-Zahlen nicht die ganze Geschichte erzählen, bieten Code-Coverage-Informationen eine nette einzelne Zahl, die Sie verwenden können, um den Fortschritt Ihrer Tests zu verfolgen.