Google Test est un cadre de test unitaire couramment utilisé dans C. La méthode d'installation varie d'un système à l'autre: Ubuntu est installé avec APT et compilé manuellement, MacOS est installé avec Homebrew, Windows ou les utilisateurs qui ont besoin de code source peuvent le télécharger via GitHub et le construire avec CMake; Lors de la rédaction de cas de test, utilisez des macros de test pour définir des suites de test et des cas d'utilisation, et utilisez attendre_eq, attendre_ne et autres assertions pour vérifier les résultats. Lors de la compilation, link -lgtest -lgtest_main -lpthread; Une fois le projet élargi, des fichiers de test indépendants peuvent être créés pour chaque module et tous les tests peuvent être exécutés de manière unifiée en exécutant tous les tests du programme principal; Les problèmes courants incluent les erreurs dans le chemin du fichier d'en-tête, les liens défaillants ou les tests échoués, qui peuvent être résolus en vérifiant les dépendances, en ajoutant des paramètres de débogage ou en développant l'habitude d'écrire des tests d'abord, puis du développement.
Si vous commencez tout juste à vous impliquer dans les tests C, Google Test (GTEST) est un cadre de test unitaire très pratique. Il est simple et facile à utiliser et les fonctionnalités sont suffisantes pour répondre aux besoins de la plupart des projets. Ensuite, je vous ferai étape par étape pour comprendre comment commencer avec GTest.

Installer Google Test
Avant de commencer à rédiger des tests, vous devez d'abord faire entrer dans votre environnement de développement. Différents systèmes ont des méthodes d'installation différentes:

-
Linux (Ubuntu comme exemple) : Vous pouvez l'installer directement avec
apt
:sudo apt-get install libgtest-dev
Après l'installation, vous devrez peut-être le compiler manuellement, entrez le répertoire
/usr/src/gtest
et exécutercmake . && make
. macOS (homebrew) :
Brew Installer Googlest
Windows ou souhaitez construire à partir du code source : vous pouvez télécharger le code source dans GitHub , puis le construire avec CMake.
Une fois l'installation terminée, n'oubliez pas de lier -lgtest -lgtest_main -lpthread
au moment de la compilation, sinon une erreur sera signalée.
écrivez le premier cas de test
Supposons que vous ayez une fonction simple à tester, comme une fonction d'addition:
int add (int a, int b) { retour AB; }
Vous pouvez écrire un cas de test comme ceci:
#include <gtest / gtest.h> Test (addTest, BasicAssertions) { Attendre_eq (add (2, 3), 5); Attendre_ne (add (0, 0), 1); }
Voici quelques points clés auxquels faire attention:
-
TEST(TestCaseName, TestName)
est le moyen de définir les cas de test. -
EXPECT_EQ(a, b)
signifie affirmer que les deux valeurs sont égales; S'il échoue, le test ne sera pas interrompu et l'exécution se poursuivra. - Si vous souhaitez que le test échoue, arrêtez immédiatement, utilisez
ASSERT_EQ
.
Après avoir écrit, la commande de compilation est à peu près comme ceci:
g test.cpp -lgtest -lgtest_main -lpthread -o test
Exécutez ./test
pour voir les résultats du test.
Comment organiser plusieurs fichiers de test
à mesure que le projet s'agrandit, vous pouvez avoir plusieurs fichiers de test. à l'heure actuelle, il est recommandé de créer un fichier de test séparé pour chaque module ou classe, tel que calculator_test.cpp
, string_utils_test.cpp
, etc.
Pour une gestion facile, un programme principal peut être créé pour exécuter tous les tests:
#include <gtest / gtest.h> int main (int argc, char * argv []) { :: Testing :: initgooglest (& argc, argv); return run_all_tests (); }
De cette fa?on, il vous suffit de compiler tous les fichiers de test et d'ajouter ce fichier principal pour terminer tous les tests à la fois.
FAQ et conseils de débogage
Pendant le test d'écriture, vous rencontrez souvent des problèmes mineurs, tels que:
- Le fichier d'en-tête GTest ne peut être trouvé : confirmez s'il est installé correctement et vérifiez si le chemin d'inclusion est défini.
- Temps de compilation Référence non définie : indique que la bibliothèque GTest n'est pas correctement liée, assurez-vous que
-lgtest
et-lgtest_main
sont ajoutés. - Le test échoue, mais je ne sais pas où quelque chose a mal tourné : utilisez les informations de sortie fournies par les macros telles que
EXPECT_EQ
etEXPECT_TRUE
pour vous aider à localiser rapidement les problèmes. - Je veux voir une sortie plus détaillée : Ajouter
--gtest_verbose=1
paramètre lors de l'exécution du test, et vous pouvez voir le processus détaillé de chaque test.
De plus, il est recommandé de développer l'habitude de "écrire des tests avant d'écrire du code", ce qui est très utile pour améliorer la qualité du code.
Fondamentalement, c'est tout. L'utilisation de base de GTEST n'est pas compliquée, mais il est facile d'ignorer les détails, tels que la liaison de la bibliothèque ou l'initialisation du code. Tant que vous comprenez ces choses, le reste est d'écrire la logique de test dans le format.
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Les fonctions sont l'unité de base de l'organisation du code en C, utilisé pour réaliser la réutilisation et la modulation du code; 1. Les fonctions sont créées par des déclarations et des définitions, telles que INTADD (INTA, INTB) renvoie la somme des deux nombres; 2. Passez les paramètres lors de l'appel de la fonction et renvoyez le résultat du type correspondant après l'exécution de la fonction; 3. La fonction sans rendement de fonction utilise vide comme type de retour, tel que voidgreet (StringName) pour la sortie des informations de salutation; 4. L'utilisation des fonctions peut améliorer la lisibilité du code, éviter la duplication et faciliter la maintenance, qui est le concept de base de la programmation C.

DecType est un mot-clé utilisé par C 11 pour déduire les types d'expression au moment de la compilation. Les résultats de la dérivation sont précis et n'effectuent pas de conversion de type. 1. Dectype (Expression) n'analyse que les types et ne calcule pas les expressions; 2. Déduire le nom de variable Dectype (x) en tant que type de déclaration, tandis que Decltype ((x)) est déduit comme x en raison de l'expression de Lvalue; 3. Il est souvent utilisé dans les modèles pour déduire la valeur de retour via le type de retour de queue 4. Les déclarations de type complexe peuvent être simplifiées en combinaison avec Auto, telles que Dectype (Vec.Begin ()) IT = Vec.Begin (); 5. évitez les classes codées durs dans les modèles

C FoldeRexpressions est une caractéristique introduite par C 17 pour simplifier les opérations récursives dans les modèles de paramètres variadiques. 1. Le pli gauche (args ...) Sum de gauche à droite, comme la somme (1,2,3,4,5) renvoie 15; 2. Logical et (args && ...) déterminez si tous les paramètres sont vrais, et les paquets vides renvoient vrai; 3. Utiliser (std :: cout

La boucle de plage basée sur C de C améliore la lisibilité du code et réduit les erreurs en simplifiant la syntaxe. Sa structure de base concerne (Déclaration: gamme), qui convient aux tableaux et aux conteneurs STL, tels que la traversée Intarr [] ou STD :: Vectorvec. L'utilisation de références (telles que conststd :: string & name) peut éviter de copier les frais généraux et peut modifier le contenu de l'élément. Les notes incluent: 1. Ne modifiez pas la structure du conteneur dans la boucle; 2. Assurez-vous que la plage est efficace et évitez l'utilisation de la mémoire libérée; 3. Il n'y a pas d'index intégré et nécessite une maintenance manuelle du comptoir. La ma?trise de ces points clés vous permet d'utiliser cette fonctionnalité efficacement et en toute sécurité.

AbinarySearchtree (BST) IsabinaryTreewhereTheleftsUbtreContainainslyNodeswithvalueslesshanthenode’svalue, TheRightSubTreConontainsonlyNodeswithvaluesGreaterthantheNode’svalue, andbothsubtreeSustalsobeBsts; 1. implémentation de la thèsecluserenereenstructurestructrescobebe;

L'appel des scripts Python en C nécessite l'implémentation via PythonCapi. Tout d'abord, initialisez l'interpréteur, puis importez le module et appelez la fonction, et enfin nettoyez les ressources; Les étapes spécifiques sont: 1. Initialisez l'interpréteur Python avec py_initialize (); 2. Chargez le module de script Python avec pyimport_import (); 3. Obtenez la fonction objectif via pyObject_getAtTrString (); 4. Utilisez pyObject_CallObject () pour passer des paramètres pour appeler la fonction; 5. Appelez py_decref () et py_finalize () pour libérer la ressource et fermer l'interprète; Dans l'exemple, bonjour est appelé avec succès

Les références sont alias pour les variables, qui doivent être initialisées à la déclaration et ne peuvent pas être référentes. 1. Les références partagent la même adresse de mémoire via Alias. La modification de tout nom affectera la valeur d'origine; 2. Les références peuvent être utilisées pour réaliser une transmission bidirectionnelle et éviter les frais généraux de copie; 3. Les références ne peuvent pas être vides et avoir la grammaire, et n'ont pas la capacité de se rapporter par rapport aux pointeurs; 4. Constt & peut être utilisé pour transmettre en toute sécurité les paramètres, empêcher la modification et la liaison de support d'objets temporaires; 5. Les références des variables locales ne doivent pas être renvoyées pour éviter les erreurs de référence suspendues. La ma?trise des citations est le principal fondement de la compréhension du C. moderne C.

Tout d'abord, clarifions la réponse: cet article présente l'utilisation de FStream en C, y compris les opérations de lecture et d'écriture de fichiers de base et les fonctions de lecture et d'écriture bidirectionnelles avancées. 1. Utilisez STD :: FStream pour définir l'objet de flux de fichiers et ouvrez le fichier dans un mode spécifié (comme std :: ios :: out, std :: ios :: in); Utilisez-le lors de l'écriture
