Comment configurer Google c++ Testing Framework (gtest) sur Visual Studio 2005

il n'est pas documenté sur le site web et les gens semblent avoir des problèmes à mettre en place le cadre. Est-ce que quelqu'un peut s'il vous plaît montrer étape par étape introduction à un exemple de configuration de projet.

72
demandé sur bitek 2009-02-10 14:32:28

7 réponses

ce qu'a dit Arlaharen était en gros juste, sauf qu'il a oublié la partie qui explique vos erreurs de linker. Tout d'abord, vous devez construire votre application sans le CRT comme une bibliothèque de temps d'exécution. Vous devriez toujours faire cela de toute façon, car il simplifie vraiment la distribution de votre application. Si vous ne le faites pas, alors tous vos utilisateurs ont besoin de la bibliothèque D'exécution Visual C++ installée, et ceux qui ne le font pas se plaindront de la DLL mystérieuse manquant sur leur système... pour les quelques centaines de kilooctets supplémentaires qu'il en coûte de relier dans le CRT statically, vous économisez vous-même beaucoup de maux de tête plus tard dans le soutien (faites-moi confiance sur celui-ci -- je l'ai appris à la dure!).

de toute façon, pour ce faire, vous allez dans les propriétés de la cible -> C/C++ -> génération de Code -> bibliothèque Runtime, et il doit être défini comme" multi-Threaded "pour votre construction de version et" Multi-Threaded Debug " pour votre construction de débogage.

depuis la bibliothèque gtest est construit de la même manière , vous devez vous assurer que vous liez avec la version correcte de it , ou bien le linker va tirer dans une autre copie de la bibliothèque runtime, qui est l'erreur que vous avez vu (btw, cela ne devrait pas faire de différence si vous utilisez MFC ou non). Vous devez construire gtest comme à la fois en mode Debug et Release et conserver les deux copies. Vous vous liez alors à gtest.lib / gtest_main.lib dans votre Communiqué de construire et gtestd.lib / gtest_maind.lib dans ta version de débogage.

aussi, vous devez vous assurer que votre application pointe vers le répertoire où les fichiers d'en-tête gtest sont stockés (dans les propriétés - > C/C++ - > Généralités - > répertoires Include supplémentaires), mais si vous avez l'erreur de linker, je suppose que vous avez déjà réussi à obtenir cette partie correcte, ou bien vous auriez beaucoup plus d'erreurs de compilateur à traiter en premier.

41
répondu Nik Reiman 2009-02-10 17:37:13

(ces instructions font fonctionner le framework de test pour la configuration de débogage. Il devrait être assez trivial d'appliquer le même processus à la configuration de la version.)

Get Google C++ Testing Framework

  1. Télécharger le dernier gtest cadre
  2. Décompresser C:\gtest

construire le Bibliothèques Cadres

  1. Ouvrir C:\gtest\msvc\gtest.sln dans Visual Studio
  2. définir la Configuration à "déboguer"
  3. Générer La Solution

"Créez et configurez votre projet Test

  1. créez une nouvelle solution et choisissez le modèle Visual C++ > Win32 > Win32 Console Application
  2. clic droit sur le projet nouvellement créé et choisissez "Propriétés de la 1519180920"
  3. changer la Configuration en Debug.
  4. Propriétés De Configuration > C/C++ > Général > Autres Répertoires Inclus: Ajouter C:\gtest\include
  5. propriétés de Configuration > C/C++ > génération de Code > Bibliothèque D'exécution: si votre code est lié à une DLL d'exécution, choisissez DLL débogueur multi-threadé (/MDd). Si non, choisissez Debug (/MTd) multi-threaded.
  6. Propriétés De Configuration > Linker > Général > Bibliothèque Supplémentaire Répertoires: Ajouter C:\gtest\msvc\gtest\Debug ou C:\gtest\msvc\gtest-md\Debug , selon l'emplacement de gtestd.lib
  7. Propriétés De Configuration > Linker > Input > Dépendances Supplémentaires: Ajouter gtestd.lib

Vérifier Que Tout Fonctionne

  1. ouvrez le cpp dans votre projet Test contenant la fonction main() .
  2. Coller le code suivant:

    #include "stdafx.h"  
    #include <iostream>
    
    #include "gtest/gtest.h"
    
    TEST(sample_test_case, sample_test)
    {
        EXPECT_EQ(1, 1);
    }
    
    int main(int argc, char** argv) 
    { 
        testing::InitGoogleTest(&argc, argv); 
        RUN_ALL_TESTS(); 
        std::getchar(); // keep console window open until Return keystroke
    }
    
  3. Débogage > Démarrer Le Débogage

si tout a fonctionné, vous devriez voir la fenêtre de la console apparaître et vous montrer les résultats du test de l'unité.

98
répondu mtlynch 2015-09-03 21:33:11

j'ai fait un tutoriel vidéo sur la configuration: http://www.youtube.com/watch?v=mzSzwQOmMRs

6
répondu Armando 2010-08-25 04:02:32

Si vous ne souhaitez écrire votre propre main() pour les tests, vous pouvez utiliser la fonction main() définie dans gtest_main.lib mais ensuite vous obtenez des erreurs de linker "le point D'entrée doit être défini" dans VS2012. Dans votre test-projet ProjectProperties->Linker->Système->sous-système "Console" comme cela forcera VS2012 de chercher un point d'entrée appelé "main()" et le trouverez dans le gtest_main.lib (à condition que vous avez lié correctement).

5
répondu philipper 2013-02-25 23:51:20

ayant construit gtest, c'est ce que j'ai fait:

  1. Ajouter \mypath\gtest-1.0.1\Debug (ou Libération) à Propriétés Communes->Linker->Général->Bibliothèque Supplémentaire Répertoires
  2. ajouter gtest.lib et gtest_main.lib de Propriétés Communes->Linker->Entrée->Dépendances Supplémentaires

après cela je n'écris que mes tests en utilisant TEST ou TEST_F comme approprié et je les compile avec ma fonction principale:

int main(int argc, char** argv)
{
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}
4
répondu Arlaharen 2009-02-10 12:36:00

dans Microsoft Visual Studio, un type de bibliothèque d'exécution mal configuré provoque des erreurs de lien.

VS 2005 (et 2008) utilise DLL Multithreaded ou DLL de débogage Multithreaded par défaut. Mais la bibliothèque de test de Google utilise Mulithreaded ou Mulithreaded debug runtime par défaut.

ainsi, choisissez le type de bibliothèque de temps d'exécution approprié pour la bibliothèque de test de google. (dans Propriétés de Configuration - > génération de Code - > bibliothèque Runtime).

2
répondu rein 2009-07-14 07:01:56

beaucoup d'erreurs, a pris un certain temps à corriger.

Voici des étapes simples:

# Télécharger le fichier ZIP Googletest à partir de: https://github.com/google/googletest

# Googletest visual studio solution

Open    C:\googletest\googletest\msvc10\gtest.sln
    Change "Solution configuration"
        from "Debug" to "Release"
    Build Solution
        creates gtest.lib

# Votre projet:

Project Properties > Configuration Properties > VC++ Directories > Include Directories
    append the following:       ;C:\googletest\googletest\include

Project Properties > Configuration Properties > Linker > General > Additional Library Directories > 
    append the following:           ;C:\googletest\googletest\msvc10\gtest\Win32-Release

Project Properties > Configuration Properties > C/C++ > Runtime Library
    Remove the value of the above. (or match it to Googletest project)
0
répondu Manohar Reddy Poreddy 2017-12-13 14:20:00