Il n'est pas documenté sur le site Web et les gens semblent avoir des problèmes pour configurer le cadre. Quelqu'un peut-il s'il vous plaît montrer une introduction étape par étape pour un exemple de configuration de projet?
Ce qu'Arlaharen a dit était fondamentalement vrai, sauf qu'il a omis la partie qui explique vos erreurs de l'éditeur de liens. Tout d'abord, vous devez construire votre application sans le CRT en tant que bibliothèque d'exécution. Vous devriez toujours le faire de toute façon, car cela simplifie vraiment la distribution de votre application. Si vous ne le faites pas, tous vos utilisateurs ont besoin que la bibliothèque d'exécution Visual C++ soit installée, et ceux qui ne s'en plaindront pas de mystérieuses DLL manquantes sur leur système ... pour les quelques centaines de kilo-octets supplémentaires qu'il en coûte pour se connecter le CRT statiquement, vous vous épargnez beaucoup de maux de tête plus tard en support (croyez-moi sur celui-ci - je l'ai appris à la dure!).
Quoi qu'il en soit, 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-Threaded" pour votre version Release et "Multi-Threaded Debug" pour votre version de débogage.
Étant donné que la bibliothèque gtest est construite de la même manière, vous devez vous assurer que vous liez avec la bonne version de it , sinon l'éditeur de liens tirera dans une autre copie de la bibliothèque d'exécution, qui est l'erreur que vous avez vue (au fait, cela ne devrait pas faire de différence si vous utilisez MFC ou non). Vous devez construire gtest en mode à la fois un débogage et une version et conserver les deux copies. Vous établissez ensuite un lien avec gtest.lib/gtest_main.lib dans votre version Release et gtestd.lib/gtest_maind.lib dans votre version Debug.
En outre, vous devez vous assurer que votre application pointe vers le répertoire dans lequel les fichiers d'en-tête gtest sont stockés (dans les propriétés -> C/C++ -> Général -> Inclure les répertoires supplémentaires), mais si vous arrivez à l'erreur du lieur, je suppose que vous avez déjà réussi à obtenir cette partie correcte, sinon vous auriez beaucoup plus d'erreurs de compilation à traiter en premier.
(Ces instructions permettent au framework de test de fonctionner pour la configuration de débogage. Il devrait être assez simple d'appliquer le même processus à la configuration de publication.)
Obtenez le framework de test Google C++
C:\gtest
Construisez les bibliothèques du framework
C:\gtest\msvc\gtest.sln
Dans Visual StudioCréez et configurez votre projet de test
C:\gtest\include
C:\gtest\msvc\gtest\Debug
Ou C:\gtest\msvc\gtest-md\Debug
, Selon l'emplacement de gtestd.libgtestd.lib
Tout vérifier fonctionne
main()
.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
}
Déboguer> 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 des tests unitaires.
J'ai fait un tutoriel vidéo sur la configuration: http://www.youtube.com/watch?v=mzSzwQOmMRs
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 des erreurs de l'éditeur de liens "Le point d'entrée doit être défini" dans VS2012. Dans votre projet de test, définissez ProjectProperties-> Linker-> System-> SubSystem sur "Console" car cela forcera VS2012 à rechercher un point d'entrée appelé "main ()" et le trouvera dans gtest_main.lib (à condition que vous ayez lié correctement).
Après avoir construit gtest, voici ce que j'ai fait:
Après cela, j'écris simplement mes tests en utilisant TEST ou TEST_F selon le cas et je les compile avec ma fonction principale:
int main(int argc, char** argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
Dans Microsoft Visual Studio, un type de bibliothèque d'exécution mal configuré provoque des erreurs de lien.
VS 2005 (et 2008) utilise Multithreaded DLL ou Multithreaded Debug DLL par défaut). Mais la bibliothèque de test Google utilise Mulithreaded ou Mulithreaded debug runtime runtime debug par défaut.
Donc, choisissez le type de bibliothèque d'exécution approprié pour la bibliothèque de test Google. (dans Propriétés de configuration -> Génération de code -> Bibliothèque d'exécution).
De nombreuses erreurs ont pris du temps à corriger.
Voici quelques étapes simples:
# Téléchargez le fichier Zip Googletest à partir de: https://github.com/google/googletest
# Googletest Visual Studio Solution
Open C:\googletest\googletest\msvc\2010\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\msvc\2010\gtest\Win32-Release
Project Properties > Configuration Properties > C/C++ > Runtime Library
Remove the value of the above. (or match it to Googletest project)