Maison >développement back-end >C++ >C La couverture de test en C est et vous apprendra à utiliser

C La couverture de test en C est et vous apprendra à utiliser

Linda Hamilton
Linda Hamiltonoriginal
2025-01-30 04:04:09528parcourir

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

Utilisez simplement GenHTML pour passer

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

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

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. Cobertura de teste em C existe e vou te ensinar a usar

Enfin, GenHTML a de nombreuses marques personnalisées.

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

Cobertura de teste em C existe e vou te ensinar a usar 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn