82 votes

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

Ce n'est pas documenté sur le site web et les gens semblent avoir du mal à mettre en place le framework. Quelqu'un peut-il s'il vous plaît montrer étape par étape l'introduction d'un exemple de configuration de projet.

108voto

nonsensical101 Points 752

(Ces instructions d'obtenir le test de cadre de travail pour la configuration de Débogage. Il devrait être assez trivial à appliquer le même processus pour la Libération de configuration.)

Obtenir De Google C++ Cadre De Tests De

  1. Télécharger la dernière gtest cadre
  2. Décompressez d' C:\gtest

Construire le Cadre des Bibliothèques

  1. Ouvrez C:\gtest\msvc\gtest.sln dans Visual Studio
  2. Configuration de l'ensemble de "Debug"
  3. Générer La Solution

Créer et Configurer Votre Projet de Test

  1. Créer une nouvelle solution et choisir le modèle de Visual C++ > Win32 > Application Console Win32
  2. Cliquez-droit sur le projet nouvellement créé et choisissez Propriétés
  3. Modification de la Configuration de Débogage.
  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 > de la Bibliothèque d'Exécution: Si votre code est lié à une DLL d'exécution, choisissez multithread DLL de Débogage (/MDd). Si non, choisissez Multi-threaded Debug (/MTd).
  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 > Entrée > Dépendances Supplémentaires: Ajouter gtestd.lib

Vérifier Que Tout Fonctionne

  1. Ouvrir le rpc dans votre Projet de Test contenant l' main() fonction.
  2. Collez 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
}
  1. Debug > Démarrer Le Débogage

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

45voto

Nik Reiman Points 16156

Ce Arlaharen dit a raison sur le fond, sauf qu'il laisse de côté la partie qui explique les erreurs d'édition de liens. Tout d'abord, vous avez besoin pour construire votre application sans la CGT comme une bibliothèque d'exécution. Vous devriez toujours le faire de toute façon car il simplifie la distribution de votre application. Si vous ne le faites pas, alors tous à vos utilisateurs de Visual C++ Runtime Library installé, et ceux qui ne le font pas se plaindre mystérieux DLL manquant sur leur système... pour le supplément de quelques centaines de kilo-octets qu'il en coûte de lien dans le CRT de manière statique, de vous sauver beaucoup de maux de tête plus tard, à l'appui (faites-moi confiance sur ce point-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 d'Exécution, et il doit être défini comme "Multi-Thread" pour votre Version de construire et de "Multi-thread "Debug" pour votre version de Débogage.

Depuis le gtest bibliothèque est construite de la même manière, vous devez vous assurer que vous liez à l'encontre de la version correcte d' elle, ou d'autre que l'éditeur de liens tirez-en un autre exemplaire de la bibliothèque d'exécution, qui est l'erreur que vous avez vu (btw, cela ne devrait pas faire une différence si vous êtes à l'aide de MFC ou pas). Vous avez besoin pour construire gtest comme à la fois un Debug et Release mode et de garder les deux copies. Vous devez ensuite lier contre gtest.lib/gtest_main.lib dans votre Communiqué de construire et gtestd.lib/gtest_maind.lib dans votre version de Débogage.

Aussi, vous devez vous assurer que votre demande de pointe vers le répertoire où le gtest fichiers d'en-tête sont stockés (dans propriétés -> C/C++ -> Général -> autres Répertoires inclus), mais si tu as de l'éditeur de liens d'erreur, je suppose que vous avez déjà réussi à obtenir cette partie correcte, ou que vous voulez avoir beaucoup plus d'erreurs du compilateur de traiter en premier.

6voto

Armando Points 321

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

5voto

Arlaharen Points 1315

Ayant construit gtest, voici ce que j'ai fait:

  1. Ajouter \ mypath \ gtest-1.0.1 \ Debug (ou version) aux propriétés communes-> lieur-> général-> répertoires de bibliothèque supplémentaires
  2. Ajoutez gtest.lib et gtest_main.lib aux propriétés communes-> lieur-> entrée-> dépendances supplémentaires

Après cela, je viens d'écrire mes tests en utilisant TEST ou TEST_F selon le cas et de les compiler avec ma fonction principale:

 int main(int argc, char** argv)
{
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}
 

5voto

philipper Points 21

Si vous ne voulez pas écrire votre propre main () pour les tests, vous pouvez utiliser la fonction main () définie dans gtest_main.lib, mais vous obtenez alors l’erreur de l’éditeur de liens "Le point d’entrée doit être défini" dans VS2012. Dans votre projet test, définissez ProjectProperties-> Linker-> System-> SubSystem sur "Console", ce qui forcera VS2012 à rechercher un point d'entrée appelé "main ()" et le trouvera dans gtest_main.lib (à condition que vous ayez un lien). dans correctement).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X