Maison  >  Article  >  développement back-end  >  Comment mesurer la couverture des tests unitaires des fonctions C++ ?

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

WBOY
WBOYoriginal
2024-04-24 09:36:02562parcourir

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

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

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

使用外部工具

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

实战案例

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

int sum(int a, int b) {
  return a + b;
}

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

#include "gtest/gtest.h"

TEST(SumTest, PositiveValues) {
  EXPECT_EQ(sum(1, 2), 3);
}

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

gtest SumTest --gtest_output=xml

生成的 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;
🎜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!

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