Heim >Backend-Entwicklung >C++ >C Testabdeckung in C ist und lehrt Sie, wie man benutzt

C Testabdeckung in C ist und lehrt Sie, wie man benutzt

Linda Hamilton
Linda HamiltonOriginal
2025-01-30 04:04:09528Durchsuche

Software -Testberichterstattung ist für die Softwareentwicklung sehr wichtig. Der Test stellt sicher, dass die Software wie erwartet ausgeführt wird und die Testabdeckung sicherstellt, dass Sie alle Möglichkeiten des Codes überprüfen. Viele moderne Sprachen haben Bibliotheken oder Tools, die die Berichterstattung über die Berichterstattung erzeugen, aber wissen Sie, dass es ein "natives" Tool für C -Sprache gibt?

Beginnen wir mit einem einfachen Code, der ± 42 Code zurückgibt:

<code class="language-c">#include <stdbool.h>

int return_42(bool ret_neg) {
  if (ret_neg)
    return -42;
  return 42;
}</code>

jetzt ist eine einfache Testdatei:

<code class="language-c">#include <assert.h>
#include <stdbool.h>
#include <stdio.h>

int return_42(bool ret_neg);

int main() {
  assert(return_42(false) == 42);
  assert(return_42(true) == -42);
  puts("Nice");
  return 0;
}</code>

Jetzt können wir den GCC/CC -Compiler und -fprofile-arcs und -ftest-coverage verwenden, um Code zu kompilieren.

generiert eine Datei mit ausführbaren Dateien und erweiterten Namen .gcno.

Nach dem Erstellen dieser Dateien führen wir den Test aus und erstellen eine Datei mit Erweiterung .gcda nach dem Vorgang.

Mit diesen neu erstellten Dateien können wir mit GCOV -Tools sie verarbeiten (bitte zuerst GCOV installieren), dann GCOV ausführen und .gcda und .gcno Dateinamen übergeben (normalerweise haben sie denselben Namen wie .c Dateien, den gleichen Namen, die Dateien im gleichen Namen, denselben Namen, die Dateien im gleichen Namen, die Datei, denselben Namen, die Datei, die Datei im selben Namen, die Datei, die Datei, die Datei, Die Datei, die Datei, die Datei, die Datei, die Datei, die Datei, die Datei, die Datei, die Datei, die Datei, die Datei, die Datei, die Datei, die Datei, die Datei, die Datei sind gleich Name, die Datei, aber sie kann anders sein). Dadurch wird eine Datei mit einer Erweiterung .gcov generiert. GCOV bietet eine kleine Zusammenfassung der Abdeckung, aber für mehr als einen einfachen Test (z. B. habe ich mehr als 120 Tests in einer Bibliothek), müssen wir die Ergebnisse intuitiver anzeigen.

Als nächstes verwenden wir LCOV (bitte zuerst LCOV installieren) und -c, -d . und -o foobar.info zum Ausführen von LCOV. Es generiert eine Datei namens und druckt die Abdeckung der Abdeckung aus. Leider zeigt diese Zusammenfassung nicht an, welche Funktionen überprüft wurden, aber mit der erstellten foobar.info -Datei können wir .info LCOV ausführen, mit denen eine lesbarere Formzusammenfassung druckt. Wir erhalten jedoch immer noch nur einen Prozentsatz, und wir können nicht sehen, welche Zeilen überprüft wurden. Geben Sie also den letzten Schritt ein und erleichtern die Visualisierung der Ergebnisse. -l foobar.info

Verwenden Sie einfach Genhtml, um

und foobar.info zu bestehen. GenHTML generiert einen Ordner, der mehr lesbare Berichterstattung enthält (Sie können diese HTML -Datei nach Belieben öffnen. Meine persönliche bevorzugte Möglichkeit zum Öffnen ist die Verwendung von -o bar_html). python -m http.server -d bar_html

Cobertura de teste em C existe e vou te ensinar a usar

Sie können auch Clang verwenden, aber die Marke ändert sich. Da ich Clang nicht mag und das Endergebnis nicht schön ist, habe ich nicht in der Tiefe gelernt, aber soweit ich es ausprobiert habe, könnten alle Funktionen mit LLVM ausgeführt werden. LLVM -Werkzeuge. Cobertura de teste em C existe e vou te ensinar a usar

Schließlich hat Genhtml viele maßgeschneiderte Markierungen.

Cobertura de teste em C existe e vou te ensinar a usar

Cobertura de teste em C existe e vou te ensinar a usar Okay, hier ist heute hier, bis zum nächsten Mal!

Das obige ist der detaillierte Inhalt vonC Testabdeckung in C ist und lehrt Sie, wie man benutzt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn