J'ai téléchargé google test, mais je ne vois pas comment le lier à mon projet dans Eclipse . Dois-je l'ajouter en tant que dossier source? Devrait-il l’inclure en tant que bibliothèque incluse dans g ++? Et comment puis-je tester alors?
En utilisant l'excellente réponse de Riga , voici un résumé de la procédure utilisée:
./scripts/Fuse_gtest_files.py . <project-dir>/contrib
contrib
de la configuration de la version Release et ajouté <project-dir>/contrib
aux répertoires include (impair, je sais)src
et d'une classe nommée Foo
(voir ci-dessous le contenu de Foo.h
-- j'ai laissé Foo.cpp
vide pour l'instant)test
dans Eclipse, exclusion de la configuration de la version Release, ajout de <project-dir>/contrib
aux répertoires d'inclusion et ajout des nouveaux fichiers source FooTest.cpp
et AllTests.cpp
(voir le contenu ci-dessous).Foo.h:
#ifndef FOO_H_
#define FOO_H_
class Foo {
public:
virtual ~Foo();
Foo();
bool foo(void) { return true; }
};
#endif /* FOO_H_ */
FooTest.cpp:
#include "gtest/gtest.h"
#include "Foo.h"
namespace {
class FooTest : public ::testing::Test {
protected:
Foo foo;
};
TEST_F(FooTest, Foo) {
ASSERT_TRUE(foo.foo());
}
}
AllTests.cpp:
#include "gtest/gtest.h"
#include "FooTest.cpp"
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
Voici les étapes détaillées:
cd /tmp
wget http://googletest.googlecode.com/files/gtest-1.5.0.tar.bz2
cd gtest-1.5.0/
./scripts/Fuse_gtest_files.py . <project-dir>/contrib
contrib
, sélectionnez Exclure de la construction ... *, décochez uniquement la case ** Libération et cliquez sur OK.contrib
et sélectionnez Propriétés> C/C++ Créer> Paramètres> Onglet Paramètres> GCC C++ Compiler> Répertoires<project-name>/contrib
et cliquez sur OK pour ajouter le répertoire.src
comme nom et cliquez sur OK.src
dans le volet de l'Explorateur de projet et sélectionnez Nouveau> Classe, nommez-le Foo
, puis cliquez sur OK (voir ci-dessus le contenu de Foo.h
; Foo.cpp
peut être laissé tel quel)test
comme nom et cliquez sur OK.<project-name>/contrib
et <project-name>/src
en tant que répertoires include au répertoire test
.test
, puis sélectionnez Nouveau> Fichier source pour ajouter AllTests.cpp
au dossier test
, puis répétez les mêmes étapes pour ajouter FooTest.cpp
(voir le contenu ci-dessus).FooTest.cpp
et sélectionnez Exclure de la construction ..., cliquez sur le bouton Tout sélectionner, puis sur OK.Étape 1 Installez Eclipse
Si Eclipse n'est pas déjà installé sur la machine, procurez-vous la dernière version d'Eclipse IDE pour les développeurs C/C++ à partir de la page de téléchargements Eclipse ( http://www.Eclipse.org/downloads/ ).
Si Eclipse est déjà installé mais uniquement pour Java, téléchargez le plug-in C++ en suivant ces instructions.
une. Ouvrez Eclipse et cliquez sur Aide-> Installer un nouveau logiciel.
b. Dans la zone Travailler avec, tapez http://download.Eclipse.org/tools/cdt/releases/kepler . Après quelques instants, la zone Nom s’installe. Sélectionnez les composants suivants:
c. Cliquez sur Suivant, acceptez les déclarations, puis cliquez sur Terminer.
Étape 2 Télécharger Cygwin
Installez Cygwin en cliquant sur le lien setup-x86_64.exe sur la page d'installation de Cygwin ( http://www.cygwin.com/install.html ). Après l'exécution, cliquez sur Suivant dans les paramètres par défaut jusqu'à la fenêtre Sélectionner les packages.
Vous devrez rechercher et installer deux packages: gcc et make.
Le premier terme de recherche est gcc. Recherchez gcc, puis ouvrez le dossier Devel. Marquez les paquets suivants pour l’installation en cliquant sur le mot de passe (il passera ensuite au numéro de build, qui peut être supérieur à celui illustré ici): gcc-core, gcc-g ++ et libgcc1.
Le second terme de recherche est make. Ici, nous n’aurons besoin que du paquet Devel.
Une fois ceux-ci sélectionnés, cliquez sur Suivant pour l'installer.
Étape 3 Téléchargez et créez le projet Google Test
Téléchargez la dernière version de GoogleTest à partir de https://code.google.com/p/googletest/downloads/list et extrayez le contenu du fichier Zip dans un répertoire commun. Il est important que tous les utilisateurs puissent accéder à ce répertoire.
Pour construire le projet Google Test:
cd c:/<<yourpath>>/gtest-1.7.0/make/
make
ar -rv libgtest.a gtest-all.o
Étape 4 Ajoutez le répertoire bin Cygwin à la variable PATH de l'ordinateur
Suivez les instructions sur cette page pour votre version de Windows: http://www.Java.com/fr/download/help/path.xml , pour ajouter le répertoire bin Cygwins à la variable d’environnement PATH de votre ordinateur. (généralement en ajoutant; C:\cygwin64\bin à la fin de la valeur actuelle).
Étape 5 Créez un nouveau projet utilisant GoogleTest
Démarrez Eclipse et sélectionnez Fichier-> Nouveau-> Projet C++. Entrez les valeurs ci-dessous et cliquez sur Terminer.
Dans l'exploration de projet, cliquez avec le bouton droit sur le nom du projet et sélectionnez Propriétés. Sous Génération C/C++, définissez le type de générateur sur Générateur interne.
Sous Génération C/C++, sélectionnez Paramètres, puis cliquez sur le dossier Inclut sous Cygwin C++ Compiler. Cliquez sur le bouton Ajouter dans la zone du haut, puis accédez au dossier d'inclusion de GoogleTest.
Enfin, sous le dossier Cygwin C++ Linker, sélectionnez Divers, puis cliquez sur l’icône Ajouter sous Autres objets. Recherchez le fichier libgtest.a que vous avez créé à l'étape 3 (il doit figurer dans le répertoire make du dossier gtest décompressé).
C'est tout! Maintenant, vous êtes prêt à l'essayer.
Etape 6 Ecrivez du code utilisant GoogleTest
Copiez et collez le code ci-dessous dans les fichiers appropriés:
Counter.h
class Counter {
private:
int mCounter;
public:
Counter() : mCounter(0) {}
int Increment();
};
Counter.cpp
#include <stdio.h>
#include "Counter.h"
int Counter::Increment() {
return mCounter++;
}
Counter_Tests.cpp
#include "gtest/gtest.h"
#include "Counter.h"
TEST(Counter, Increment) {
Counter c;
EXPECT_EQ(0, c.Increment());
EXPECT_EQ(1, c.Increment());
EXPECT_EQ(2, c.Increment());
}
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
Dans le menu Projet, sélectionnez Construire tout. Maintenant, pour vous connecter à la structure de test unitaire de GoogleTest, sélectionnez Exécuter les configurations dans le menu Exécuter. Dans cette boîte de dialogue, sélectionnez Unité C/C++ et cliquez sur le bouton Nouveau.
Il convient de renseigner automatiquement le nom de ce projet sous Application C/C++. Sinon, cliquez sur Rechercher dans le projet pour sélectionner ce projet. Ensuite, cliquez sur l'onglet Test C/C++. Dans la liste déroulante Tests Runner, choisissez Google Tests Runner, puis cliquez sur Exécuter pour regarder la magie!
Vous trouverez ci-dessous un aperçu du résultat. Après avoir écrit plus de code/tests, vous pouvez cliquer sur le bouton surligné en rouge pour recompiler et réexécuter rapidement tous les tests.
Vous ne devriez pas l'ajouter à votre dossier source, créez plutôt un dossier séparé. Ceci permet d'éviter la dépendance de votre code de production par rapport au projet de test. Fais-le comme ça
../ #your project folder
Makefile
src/
module1 #some module
module2 #another module
build #tmp for build
dist #binaries
contrib/
gtest
...
test/ #your test project folder
Makefile
src/
module1 #correspondent to main project's one
module2 #correspondent to main project's one
build
dist
...
J'utilise habituellement google test sous forme de deux fichiers, ce qui est très pratique. Utilisez scripts/Fuse_gtest_files.py
de la distribution gtest pour les extraire. N'ayant que deux fichiers, vous pouvez inclure leur compilation dans la compilation de votre projet test et disposer d'une structure de projet simple.
Dans votre test, spécifiez les répertoires include de ../contrib:../src:src
.
test/src/module1/class1Test.h:
#include "gtest/gtest.h"
#include "module1/class1.h"
// test class1 here
// ...
test/src/mainTest.cpp:
#include "gtest/gtest.h"
#include "module1/class1Test.h"
#include "module2/class2Test.h"
// include other tests you have
// ...
int main(int argc, char** argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
Voici ma solution pour Eclipse 4.3 et CDT 8.2 Je pensais que cela était un peu plus facile que ce qui est décrit ci-dessus.
Téléchargez gtest et installez-le comme décrit dans le fichier readme.txt (en utilisant cmake et make in linux)
Allez dans "YourProject-> Propriétés-> C/C++ Build-> Paramètres-> Compilateur GCC C++-> Inclut-> Chemins d'accès" et ajoutez le dossier include dans gtest.
Allez dans "YourProject-> Propriétés-> C/C++ Build-> Paramètres-> GCC C++ Linker-> Bibliothèques", ajoutez le dossier gtest comme chemin de recherche et ajoutez les bibliothèques "gtest" et "pthread"
(4. Si vous avez des tests dans le même projet, les sources excluent les tests de la version release)
Allez dans "Exécuter-> Exécuter les configurations ..." et créez une nouvelle configuration d'exécution d'unité C/C++.
Définissez le projet sur votre projet et l'application C/C++ sur votre application dans l'onglet principal. Définissez Tests Runner sur Google Test Runner dans l'onglet Test C/C++.
(7. Des notifications d'erreur peuvent rester dans l'interface graphique Eclipse. Si tel est le cas, il peut être utile de réindexer le projet.)
J'ai plateau votre solution et ça marche bien. Je peux dire que pour compiler gtest n'est pas très clair dans le fichier README. SMS.
J'ai exécuté le fichier makefile dans le répertoire/make via une console cygwin . Dans mon cas, le compilateur me conseille de ne pas trouver la bibliothèque pthread. J'ai donc modifié la ligne
CXXFLAGS += -g -Wall -Wextra -pthread
et l'a changé pour
CXXFLAGS += -g -Wall -Wextra -lpthread
Le résultat obtenu est gtest_main.a
. Ensuite, j'ai renommé ce fichier libgtest.a et copié-le dans C:\cygwin\lib directory
.
Ensuite, j'ai configuré mon projet Eclipse pour qu'il utilise cygwin et que gtest et pthread soient ajoutés comme vous le dites ... et que cela fonctionne!
J'espère que ça peut aider quelqu'un