web-dev-qa-db-fra.com

utiliser googletest dans Eclipse: comment?

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?

32
user478310

En utilisant l'excellente réponse de Riga , voici un résumé de la procédure utilisée:

  1. Création d'un nouveau projet C++ dans Eclipse (j'ai choisi Executable> Empty Project)
  2. Téléchargé googletest 1.5.0 , untarred, and ran ./scripts/Fuse_gtest_files.py . <project-dir>/contrib
  3. De retour dans Eclipse, a exclu le répertoire contrib de la configuration de la version Release et ajouté <project-dir>/contrib aux répertoires include (impair, je sais)
  4. Ajout d'un répertoire 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)
  5. Ajout d'un répertoire 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).
  6. Construit et dirigé le projet!

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:

  1. Dans Eclipse, ouvrez le menu Fichier et sélectionnez Nouveau> C++ Projet.
  2. Type de projet: Exécutable> Projet vide
  3. Toolchain: Linux GCC
  4. Cliquez sur Terminer
  5. Ouvrez un terminal et cd /tmp
  6. wget http://googletest.googlecode.com/files/gtest-1.5.0.tar.bz2
  7. cd gtest-1.5.0/
  8. ./scripts/Fuse_gtest_files.py . <project-dir>/contrib
  9. De retour dans Eclipse, cliquez avec le bouton droit sur le dossier du projet dans le volet Explorateur de projets, puis sélectionnez Rafraîchir.
  10. Dans le volet Explorateur de projet, cliquez avec le bouton droit de la souris sur le dossier contrib, sélectionnez Exclure de la construction ... *, décochez uniquement la case ** Libération et cliquez sur OK.
  11. Cliquez avec le bouton droit sur le dossier contrib et sélectionnez Propriétés> C/C++ Créer> Paramètres> Onglet Paramètres> GCC C++ Compiler> Répertoires
  12. Cliquez sur le bouton Ajouter ..., puis sur le bouton Espace de travail ..., puis sélectionnez <project-name>/contrib et cliquez sur OK pour ajouter le répertoire.
  13. Cliquez une fois de plus sur OK pour accepter les modifications apportées aux paramètres de construction.
  14. Cliquez avec le bouton droit sur le projet dans le volet Explorateur de projets et sélectionnez Nouveau> Dossier, entrez src comme nom et cliquez sur OK.
  15. Cliquez avec le bouton droit sur le dossier 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)
  16. Cliquez avec le bouton droit sur le projet dans le volet Explorateur de projets et sélectionnez Nouveau> Dossier, entrez test comme nom et cliquez sur OK.
  17. Suivez les étapes ci-dessus pour ajouter <project-name>/contrib et <project-name>/src en tant que répertoires include au répertoire test.
  18. Cliquez avec le bouton droit sur le dossier 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).
  19. Cliquez avec le bouton droit sur FooTest.cpp et sélectionnez Exclure de la construction ..., cliquez sur le bouton Tout sélectionner, puis sur OK.
  20. Cliquez avec le bouton droit de la souris sur le projet dans le volet Explorateur de projets, puis sélectionnez Propriétés> C/C++ Créer> Paramètres> onglet Paramètres de l'outil> Éditeur de liens C++ GCC. > Bibliothèques, puis cliquez sur le bouton Ajouter ..., entrez pthread (requis par googletest), cliquez sur OK pour ajouter la bibliothèque, puis sur OK une fois de plus pour accepter les modifications
  21. Appuyez sur Ctrl-b pour construire le projet
  22. Appuyez sur Ctrl-F11 pour exécuter le projet
  23. La victoire!
39
Josh Glover

É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.

enter image description here

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:

  • CDT Main Features -> Outils de développement C/C++
  • Caractéristiques principales de CDT -> Outils de développement C/C++ SDK
  • Fonctions facultatives de CDT -> Support de test d'unité C/C++
  • Fonctions facultatives de CDT -> Source de support de test d'unité C/C++
  • Fonctionnalités optionnelles CDT -> Support C/C++ Visual C++

enter image description here

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.

enter image description here

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.

enter image description here

Le second terme de recherche est make. Ici, nous n’aurons besoin que du paquet Devel.

enter image description here

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:

  1. Ouvrez Cygwin (recherchez le répertoire d'installation de Cygwin et double-cliquez sur Cygwin.bat).
  2. Remplacez le répertoire de travail actuel par le répertoire de création GoogleTest décompressé: cd c:/<<yourpath>>/gtest-1.7.0/make/
  3. Construisez le projet: make
  4. Créez une bibliothèque archivée à partir du fichier gtest-all.o: 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.

enter image description here

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.

enter image description here

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.

enter image description here

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é).

enter image description here

C'est tout! Maintenant, vous êtes prêt à l'essayer.

Etape 6 Ecrivez du code utilisant GoogleTest

  • Ajoutez un dossier source en cliquant sur Fichier-> Nouveau-> Dossier source. Appelez-le Src. 
  • Ajoutez un fichier d'en-tête en cliquant avec le bouton droit sur le dossier src et sélectionnez Nouveau-> Fichier d'en-tête. Appelez ce fichier Counter.h. 
  • Ajoutez un fichier source en cliquant avec le bouton droit sur le dossier src et sélectionnez Nouveau-> Fichier source. Appelez Ce fichier Counter.cpp. 
  • Ajoutez un autre fichier source et appelez-le Counter_Tests.cpp.

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.

enter image description here

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!

enter image description here

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.

enter image description here

26
rundavidrun

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();
}
10
Riga

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.

  1. Téléchargez gtest et installez-le comme décrit dans le fichier readme.txt (en utilisant cmake et make in linux)

  2. 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.

  3. 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)

  1. Allez dans "Exécuter-> Exécuter les configurations ..." et créez une nouvelle configuration d'exécution d'unité C/C++.

  2. 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.)

6
BjornArnelid

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

0
Chemado