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.
Réponses
Trop de publicités?(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
- Télécharger la dernière gtest cadre
- Décompressez d'
C:\gtest
Construire le Cadre des Bibliothèques
- Ouvrez
C:\gtest\msvc\gtest.sln
dans Visual Studio - Configuration de l'ensemble de "Debug"
- Générer La Solution
Créer et Configurer Votre Projet de Test
- Créer une nouvelle solution et choisir le modèle de Visual C++ > Win32 > Application Console Win32
- Cliquez-droit sur le projet nouvellement créé et choisissez Propriétés
- Modification de la Configuration de Débogage.
- Propriétés De Configuration > C/C++ > Général > Autres Répertoires Inclus: Ajouter
C:\gtest\include
- 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).
- Propriétés de Configuration > Linker > Général > Bibliothèque Supplémentaire Répertoires: Ajouter
C:\gtest\msvc\gtest\Debug
ouC:\gtest\msvc\gtest-md\Debug
, selon l'emplacement de gtestd.lib - Propriétés De Configuration > Linker > Entrée > Dépendances Supplémentaires: Ajouter
gtestd.lib
Vérifier Que Tout Fonctionne
- Ouvrir le rpc dans votre Projet de Test contenant l'
main()
fonction. - 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
}
- 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.
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.
J'ai fait un didacticiel vidéo sur la configuration: http://www.youtube.com/watch?v=mzSzwQOmMRs
Ayant construit gtest, voici ce que j'ai fait:
- 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
- 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();
}
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).