AD Teaching Wiki:

GTest

GTest (Google Test) ist eine Bibliothek mit der man sehr leicht und einfach Unit Tests schreiben und laufen lassen kann. Siehe das Beispiel aus der ersten Vorlesung.

Zum Kompilieren müssen zwei Dateien auf dem (Linux-)Rechner vorhanden sein: /usr/local/include/gtest/gtest.h sowie /usr/local/lib/libgtest.a. Auf dem Rechnern im CIP-Pool sollten diese Dateien Ende dieser Woche vorhanden sein (wir sagen Bescheid). Auf dem eigenen Rechner kann man sich GTest sehr einfach selber installieren, einfach den Anweisungen auf http://code.google.com/p/googletest folgen.

Wie man dann einen Unit Test schreibt haben wir in der ersten Vorlesung gesehen. Mehr dazu in späteren Veranstaltungen oder auf der sehr guten Dokumentation auf http://code.google.com/p/googletest.

Installation

Auf einem Rechner auf dem man selber root ist einfach folgendes machen. Ich habe es probiert, das funktioniert auch unter cygwin.

wget http://googletest.googlecode.com/files/gtest-1.5.0.zip
unzip gtest-1.5.0.zip
cd gtest-1.5.0
./configure
make
make install

Noch ein Hinweis zur Installation: Bei mir (Ubuntu 10.04 frisch aufgesetzt) genügte die beschriebene Vorgehensweise mit wget nicht. Es funktionierte aber "sudo apt-get install libgtest-dev" Fabian 16Jun10 01:07

Fragen und Antworten zur Installation

PS.: Bei Hudson läuft der Build einwandfrei durch, muss also ein lokales Problem sein =/ Simson 17Mai10 18:30

ListProcessingTst.o:ListProcessingTest.cpp:(.text+0x39):undefined reference `testing::internal::GetTestTypeId()´ Diese Meldung und 20 ähnliche bekomm ich wenn ich den Test erzeuge und ich hab überhaupt keinen Schimmer, was da schief läuft Jan 18Mai2010 17:01

Ich verwende GTest unter Mac OS. Das hat auch die letzten drei Übungsblätter prima funktioniert. Jetzt bekomme ich folgende Fehlermeldungen:

Undefined symbols:
  "testing::internal::GetTestTypeId()", referenced from:
      __static_initialization_and_destruction_0(int, int)in ListProcessingTest.o
  "testing::internal::MakeAndRegisterTestInfo(char const*, char const*, char const*, char const*, void const*, void (*)(), void (*)(), testing::internal::TestFactoryBase*)", referenced from:
      __static_initialization_and_destruction_0(int, int)in ListProcessingTest.o
  "typeinfo for testing::Test", referenced from:
      typeinfo for ListProcessing_parseListOfIntegers_Testin ListProcessingTest.o
[und noch einige mehr]
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [ListProcessingTest] Error 1

-lpthread hilft leider auch nicht weiter. Hat jemand eine Idee? Danke und Grüße Simson 17Mai10 17:01

@Tina: Auf den Poolrechnern hast Du keine root-Rechte, also kannst Du es nicht so installieren. Einfach folgendes machen:

./configure --prefix=$HOME
make
make install

und danach beim eigentlichen compilieren ein gcc -lgtest -L$HOME/lib RJ 18Mai10 22:50

@Tina: Bei Ubuntu erlangt man als Mitglied der Gruppe admin vorübergehend Rootrechte, indem man vor einem Befehl sudo einfügt. Es wird dann nach dem Benutzerpasswort gefragt und anschließend der Befehl ausgeführt. In diesem Fall also:

./configure
make
sudo make install

Pat 08Mai10 12:43

Hallo, ich habe bisher an den Pool-Rechner gearbeitet und will gtest nun endlich auch mal auf meinen Laptop kriegen (arbeite mit Ubuntu). Ich bin den Installationsanweisungen auf dieser Seite gefolgt, bis:

./configure make

das hat glaub soweit geklappt. Jetzt verstehe ich das mit den root-Rechten (?) bzw. nur make install oder sudo nicht. g++ und vim habe ich mit sudo apt-get install ... installiert. was muss ich nun hier genau für gtest noch eingeben??? Tina 05Mai10 11:30

Falls es jemandem hilft, hier sind als Nebenwirkung meiner Installation die Pakete für Ubuntu/Debian:

Pat 23Apr10 12:43

Irgendwas stimmt mit GTest auf den Poolrechnern noch nicht. Ich habe grade von meinem Poolaccount die SumOfDigits.zip aus der Vorlesung heruntergeladen und wollte sie mit "make build" Kompilieren, dabei erhalte ich bei SumOfDigitsTest.cpp eine längere (für mich kryptische) Fehlermeldung. Die beiden Dateien libgtest.a und gtest.h befinden sich in den richtigen Verzeichnissen, wie oben beschrieben. Es funktioniert, wenn man an den g++ Befehl zum Kompilieren noch -pthread anhängt Fabian 26Apr10 21:36

Yipieeeh, es läuft. Man muss wenn man Cygwin installiert natürlich die richtigen Packages auswählen(gcc g++ make und confire, hab ich was vergessen?). Dann aber noch 2 Fragen: 1.) Soll ich die Endung .exe hinten wegmachen, weil das hat cygwin so gemacht man soll die executables gar nicht mithochladen 2.) Macht das was dass es jetzt im windows stil mit new line und carriage return da ist?, weil das lint meckert deswegen Jan 26Apr10 21:07

Fuer MacOSX 1.5: Funktioniert auch, natuerlich mit root-Rechten also sudo vor den Befehlen Martin 26Apr10 17:16

Fuer Kubuntu 8.10: Ich hatte Probleme mit pthreads auch unter Kubuntu 8.10. Aber ohne pthreads gings auch. :) Veit 22Apr10 20:52

@Jan: Ich habe es gerade mal unter cygwin runtergeladen und gebaut und bei mir hat alles funktioniert, s.o. Hannah 22Apr10 20:49

Hallo, weiß jemand wie man das GTest mit Cygwin installieren kann? Weil "./configure --without-pthreads" geht nicht und make auch nicht, es gibt da auch gar kein makefile (ausesr im ordner make und das geht auch nicht). Jan 22Apr10 17:50

Danke hat einwandfrei funktioniert :) Sven 22Apr10 15:00

Hallo, die Installation von GTest geht eigentlich ganz einfach, man läd GTest runter und entpackt das ganze. Nun wechselst du in der Konsole in das Verzeichnis und führt "./configure --without-pthreads" aus (dadurch werden Systemparameter bestimmt und die Verwendung von pthreads verboten [machte in VMs Probleme]). Danach einfach wie in der Vorlesung "make" ausführen. Dadurch wird GTest gebaut. Als nächstes müssen die erzeugten Libraries/Dateien noch an die passenden Stellen, dazu einfach "make install" (als SuperUser oder per sudo) ausführen. Damit wäre GTest installiert und sollte funktionieren. (Getestet mit Ubuntu 9.10 sowohl Real als auch Virtuell) Axel Lehmann 22Apr10 12:04

Habe auch meine Probleme mit der Installation von Gtest. Hab probiert das gtest.h einfach in den angegeben Ordner zu kopieren, aber hat nicht funktioniert xD. Habe auch Ubuntu, allerdings erst seit 10 Minuten mit Linux zu gange (außgenommen Systeme 1 Praktische Übung). Sven Gauß 22Apr10 12:00

Wie genau installiert man denn jetzt GTest. Ich habe mir das Archiv heruntergeladen, in welchem sich aber wesentlich mehr Dateien befinden als gtest.h und libgtest.a Die Anweisungen auf der o.g. Seite selber habe ich nicht gefunden, einzig und allein ein ReadMe im Download Archiv was ich ehrlich gesagt nicht verstanden habe. Ich arbeite mit Linux/Ubuntu. Jan Oechsler 22Apr10 10:25

Hi, ich habe jetzt GTest installiert allerdings bekomme ich einen seltsamen Fehler wenn ich make build laufen lasse, ich poste ihn einfach mal: /usr/local/lib/libgtest.a(gtest-all.o): In function testing::internal::ThreadLocal<testing::TestPartResultReporterInterface*>::CreateKey()': /home/fave/Downloads/gtest-1.5.0/./include/gtest/internal/gtest-port.h:1139: undefined reference to pthread_key_create' ....usw Könnte mir da bitte wer helfen?

AD Teaching Wiki: ProgrammierenCplusplusSS2010/GTest (last edited 2010-06-16 00:08:20 by frbg-5f7306a4)