Maison >développement back-end >C++ >C La couverture de test en C est et vous apprendra à utiliser
La couverture des tests logiciels est très importante dans le développement de logiciels. Le test garantit que le logiciel s'exécute comme prévu et la couverture du test est assurée de vérifier toutes les possibilités du code. De nombreuses langues modernes ont des bibliothèques ou des outils qui génèrent une couverture de la couverture, mais savez-vous qu'il existe un outil "natif" pour le langage C?
Commençons par un code simple qui renvoie ± 42 code:
<code class="language-c">#include <stdbool.h> int return_42(bool ret_neg) { if (ret_neg) return -42; return 42; }</code>
est maintenant un fichier de test simple:
<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>
Maintenant, nous pouvons utiliser le compilateur GCC / CC et -fprofile-arcs
et -ftest-coverage
pour compiler le code.
Cela générera un fichier avec des fichiers exécutables et le nom étendu .gcno
.
Après avoir créé ces fichiers, nous exécutons le test et créons un fichier avec une extension .gcda
après l'opération.
Avec ces fichiers nouvellement créés, nous pouvons utiliser des outils GCOV pour les traiter (veuillez d'abord installer GCOV), puis exécuter GCOV et passer dans .gcda
et .gcno
les noms de fichiers (généralement ils ont le même nom que .c
Fichiers, le même nom, les fichiers du même nom, le même nom, les fichiers du même nom, le fichier, le même nom, le fichier, le fichier au même nom, le fichier, le fichier, le fichier, Le fichier, le fichier, le fichier, le fichier, le fichier, le fichier, le fichier, le fichier, le fichier, le fichier, le fichier, le fichier, le fichier, le fichier, le fichier, le fichier est le même Nom, le fichier, mais cela peut être différent). Cela générera un fichier avec une extension .gcov
. GCOV fournira un petit résumé sur la couverture, mais pour plus d'un test simple (par exemple, j'ai plus de 120 tests dans une bibliothèque), nous devons afficher les résultats plus intuitifs.
Ensuite, nous utiliserons LCOV (veuillez installer LCOV en premier) et utiliserons -c
, -d .
et -o foobar.info
pour exécuter LCOV. Il générera un fichier appelé et imprimera la couverture de la couverture. Malheureusement, ce résumé ne montre pas quelles fonctions ont été vérifiées, mais avec le fichier créé foobar.info
, nous pouvons utiliser .info
pour exécuter LCOV, qui imprimera un résumé de formulaire plus lisible. Cependant, nous n'obtenons toujours qu'un pourcentage, et nous ne pouvons pas voir quelles lignes ont été vérifiées, alors entrons dans la dernière étape, ce qui rend les résultats plus faciles à visualiser. -l foobar.info
et foobar.info
Mark. GenHTML générera un dossier qui contient une couverture plus lisible (vous pouvez ouvrir ce fichier HTML à volonté. Ma façon préférée d'ouvrir personnelle est d'utiliser -o bar_html
). python -m http.server -d bar_html
Vous pouvez également utiliser Clang, mais la marque changera. Comme je n'aime pas Clang, et je pense que le résultat final n'est pas beau, je n'ai pas étudié en tabagisme, mais pour autant que j'ai essayé, toutes les fonctions pouvaient fonctionner avec LLVM. Outils LLVM.
Enfin, GenHTML a de nombreuses marques personnalisées.
D'accord, voici ici aujourd'hui, à la prochaine fois!
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!