Maison  >  Article  >  développement back-end  >  Comment tester unitairement la bibliothèque de fonctions C++ ?

Comment tester unitairement la bibliothèque de fonctions C++ ?

WBOY
WBOYoriginal
2024-04-19 08:27:01722parcourir

L'utilisation de Google Test pour les tests unitaires dans une bibliothèque de fonctions C++ peut garantir sa fiabilité. Les étapes spécifiques sont les suivantes : Installez Google Test pour créer des tests unitaires pour la bibliothèque de fonctions : Créez un fichier « .test.cpp » et incluez le Google Test. définition d'en-tête héritée de : La classe de scénario de test de testing::Test crée une méthode de test commençant par TEST Exécutez le test unitaire : utilisez le fichier exécutable gtest et transmettez le fichier de scénario de test. Utilisez d'autres macros d'assertion : ASSERT_EQ (abandonnez le. test), ASSERT_TRUE/ASSERT_FALSE (vérifier la condition), ASSERT_THROW (Vérifier l'exception levée)

C++ 函数库如何进行单元测试?

Comment effectuer un test unitaire dans la bibliothèque de fonctions C++

Introduction
Les tests unitaires sont essentiels pour garantir la fiabilité de la fonction bibliothèque. L'un des frameworks de tests unitaires couramment utilisés en C++ est Google Test, qui fournit un ensemble de macros et de fonctions qui simplifient le processus de test. Cet article vous expliquera comment utiliser Google Test pour les tests unitaires dans une bibliothèque C++.

Installer Google Test
Google Test peut être installé à partir des sources à l'aide de la commande suivante :

git clone https://github.com/google/googletest
cd googletest
mkdir build
cd build
cmake .. -Dgtest_build_samples=ON
make

Configurer les tests unitaires
Pour écrire un test unitaire pour une bibliothèque de fonctions, suivez ces étapes :

  1. Créez un test cas contenant un nouveau fichier, se terminant généralement par ".test.cpp".
  2. Appelez #includef8f95929f1e271b6664bf075820e4e6d pour inclure les en-têtes Google Test. #includef8f95929f1e271b6664bf075820e4e6d 包含 Google Test 标题。
  3. 定义一个测试用例类,该类继承自 ::testing::Test 基类。
  4. 在测试用例类中创建测试方法,方法名称以 TEST 开头。

实战案例:测试一个简单的函数
考虑一个名为 factorial 的函数,该函数计算给定非负整数的阶乘。让我们编写一个单元测试来测试此函数:

#include "factorial.h"
#include "gtest/gtest.h"

TEST(FactorialTest, BasicTest) {
  EXPECT_EQ(1, factorial(0));
  EXPECT_EQ(1, factorial(1));
  EXPECT_EQ(2, factorial(2));
  EXPECT_EQ(6, factorial(3));
  EXPECT_EQ(24, factorial(4));
}

在这个测试用例中:

  • TEST(FactorialTest, BasicTest) 定义了一个名为 BasicTest 的测试方法。
  • EXPECT_EQ 宏用于比较预期结果与实际结果。

运行单元测试
要运行单元测试,请使用 gtest 可执行文件。传入测试用例文件作为参数:

./gtest tests.test.cpp

输出将显示通过和失败的测试用例。

其他断言宏
Google Test 提供了其他断言宏,例如:

  • ASSERT_EQ:与 EXPECT_EQ 类似,但失败时中止测试。
  • ASSERT_TRUEASSERT_FALSE:分别检查条件是否为 true 或 false。
  • ASSERT_THROW
  • Définissez une classe de cas de test, qui hérite de la classe de base ::testing::Test.

Créez une méthode de test dans la classe de cas de test, avec le nom de la méthode commençant par TEST.
Exemple pratique : tester une fonction simple

🎜Considérons une fonction appelée factorial qui calcule la factorielle d'un entier non négatif donné. Écrivons un test unitaire pour tester cette fonction : 🎜rrreee🎜Dans ce cas de test : 🎜
    🎜TEST(FactorialTest, BasicTest) définit un fichier appelé BasicTest méthode de test . 🎜🎜La macro EXPECT_EQ est utilisée pour comparer les résultats attendus avec les résultats réels. 🎜🎜🎜🎜Exécuter des tests unitaires🎜🎜Pour exécuter des tests unitaires, utilisez l'exécutable gtest. Transmettez le fichier de scénario de test comme argument : 🎜rrreee🎜La sortie affichera les cas de test réussis et échoués. 🎜🎜🎜Autres macros d'assertion🎜🎜Google Test fournit d'autres macros d'assertion, telles que : 🎜
      🎜ASSERT_EQ : similaire à EXPECT_EQ, mais abandonne le test en cas d'échec. 🎜🎜ASSERT_TRUE et ASSERT_FALSE : Vérifiez si la condition est vraie ou fausse respectivement. 🎜🎜ASSERT_THROW : Vérifiez si la fonction appelante lève l'exception spécifiée. 🎜🎜🎜🎜Conclusion🎜🎜 Les tests unitaires dans les bibliothèques C++ sont très simples avec Google Test. En suivant les étapes décrites dans cet article, vous pouvez écrire des tests unitaires robustes et fiables qui garantissent que votre bibliothèque fonctionne comme prévu. 🎜

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