Maison > développement back-end > C++ > le corps du texte

Comment mesurer la couverture des tests unitaires des fonctions C++ ?

WBOY
Libérer: 2024-04-24 09:36:02
original
598 Les gens l'ont consulté

Les méthodes pour mesurer la couverture des tests unitaires de fonctions en C++ incluent : l'utilisation d'indicateurs du compilateur, tels que les indicateurs -fprofile-arcs et -ftest-coverage de GCC ; l'utilisation de frameworks de test, tels que l'indicateur --gtest_output=xml de Google Test, l'utilisation d'outils externes tels que ; CovWrap.

如何测量 C++ 函数单元测试的覆盖率?

Comment mesurer la couverture des tests unitaires des fonctions C++ ?

La couverture du code est un indicateur important de la qualité des tests unitaires. Il indique la quantité de code de fonction couverte par la suite de tests lors de son exécution. En C++, il existe plusieurs façons de mesurer la couverture.

Utilisation des indicateurs du compilateur

De nombreux compilateurs fournissent des indicateurs pour mesurer la couverture. Par exemple, en utilisant le compilateur GCC :

g++ -fprofile-arcs -ftest-coverage your_code.cpp
Copier après la connexion

Après avoir exécuté le programme, il générera un fichier nommé gcov.out dans le répertoire courant, qui contient les informations de couverture. gcov.out 的文件,其中包含覆盖率信息。

使用测试框架

Google Test(gtest)等测试框架提供了内置的覆盖率测量工具。在gtest中,使用 --gtest_output=xml 标志运行测试:

gtest your_test_case --gtest_output=xml
Copier après la connexion

这将生成一个 XML 文件,其中包含覆盖率数据。

使用外部工具

CovWrap 是一个外部工具,可以生成 gcov 输出。它适用于 Windows 和 Linux 系统。

实战案例

考虑一个简单的 C++ 函数:

int sum(int a, int b) {
  return a + b;
}
Copier après la connexion

创建一个单元测试来测试此函数:

#include "gtest/gtest.h"

TEST(SumTest, PositiveValues) {
  EXPECT_EQ(sum(1, 2), 3);
}
Copier après la connexion

使用gtest运行测试并生成覆盖率报告:

gtest SumTest --gtest_output=xml
Copier après la connexion

生成的 XML 报告将显示该测试覆盖了 sum

Utiliser des cadres de test

🎜🎜Les cadres de test comme Google Test (gtest) fournissent des outils de mesure de couverture intégrés. Dans gtest, exécutez le test en utilisant le flag --gtest_output=xml : 🎜
  return a + b;
Copier après la connexion
🎜Cela générera un fichier XML contenant les données de couverture. 🎜🎜🎜Utilisation d'outils externes 🎜🎜🎜CovWrap est un outil externe qui peut générer une sortie gcov. Il est disponible pour les systèmes Windows et Linux. 🎜🎜🎜Cas pratique🎜🎜🎜Considérons une fonction C++ simple : 🎜rrreee🎜Créez un test unitaire pour tester cette fonction : 🎜rrreee🎜Utilisez gtest pour exécuter le test et générer un rapport de couverture : 🎜rrreee🎜Le rapport XML généré affichera this Le test couvre les lignes de code suivantes de la fonction sum : 🎜rrreee🎜 Cela indique que le scénario de test peut couvrir la logique de la fonction. 🎜

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!