So richten Sie das Google C ++ – Test-Framework (gtest) in Visual Studio 2005 ein

Es ist nicht auf der Website dokumentiert und die Leute scheinen Probleme beim Einrichten des Frameworks zu haben. Kann jemand bitte Schritt für Schritt eine Einführung in eine Beispielprojekteinrichtung zeigen?

Was Arlaharen sagte, war grundsätzlich richtig, außer dass er den Teil weggelassen hat, der Ihre Linkererrors erklärt. Zunächst müssen Sie Ihre Anwendung ohne CRT als Laufzeitbibliothek erstellen. Sie sollten dies immer tun, da es die Verteilung Ihrer Anwendung wirklich vereinfacht. Wenn Sie dies nicht tun, müssen alle Benutzer die Visual C ++ – Laufzeitbibliothek installiert haben, und diejenigen, die dies nicht tun, werden sich darüber beschweren, dass mysteriöse DLLs auf ihrem System fehlen … für die zusätzlichen paar hundert Kilobyte, die für die Verbindung benötigt werden das CRT statisch, Sie ersparen sich später viel Unterstützung im Kopf (Vertrauen Sie mir hier – ich habe es auf die harte Tour gelernt!).

Wie auch immer, dazu gehst du zu den Eigenschaften des Ziels -> C / C ++ -> Codegenerierung -> Laufzeitbibliothek, und es muss als “Multi-Threaded” für deinen Release Build und “Multi-Threaded Debug” für Dein Debug Build.

Da die gtest-Bibliothek auf die gleiche Weise erstellt wird, müssen Sie sicherstellen, dass Sie eine Verknüpfung mit der richtigen Version herstellen, da sonst der Linker eine andere Kopie der Laufzeitbibliothek einliest, was der Fehler ist, den Sie gesehen haben (übrigens, das sollte keinen Unterschied machen, wenn Sie MFC verwenden oder nicht). Sie müssen gtest sowohl als Debug- als auch als Release- Modus erstellen und beide Kopien behalten. Sie verlinken dann gegen gtest.lib / gtest_main.lib in Ihrem Release-Build und gtestd.lib / gtest_maind.lib in Ihrem Debug-Build.

Außerdem müssen Sie sicherstellen, dass Ihre Anwendung auf das Verzeichnis verweist, in dem die gtest-Header-Dateien gespeichert sind (in Eigenschaften -> C / C ++ -> Allgemein -> Zusätzliche Include-Verzeichnisse), aber wenn Sie den Linker-Fehler haben, nehme ich an dass Sie es bereits geschafft haben, diesen Teil zu korrigieren, sonst hätten Sie viel mehr Compiler-Fehler, mit denen Sie zuerst umgehen müssten.

(Mit diesen statementen wird das Test-Framework für die Debug-Konfiguration aktiviert. Es sollte ziemlich einfach sein, den gleichen process auf die Release-Konfiguration anzuwenden.)

Holen Sie sich Google C ++ – Test-Framework

  1. Laden Sie das neueste gtest-Framework herunter
  2. Entpacken Sie C:\gtest

Erstellen Sie die Framework-Bibliotheken

  1. Öffnen Sie C:\gtest\msvc\gtest.sln in Visual Studio
  2. Konfiguration auf “Debug” setzen
  3. Lösung erstellen

Erstellen und konfigurieren Sie Ihr Testprojekt

  1. Erstellen Sie eine neue Lösung, und wählen Sie die Vorlage Visual C ++> Win32> Win32-Konsolenanwendung aus
  2. Klicken Sie mit der rechten Maustaste auf das neu erstellte Projekt und wählen Sie Eigenschaften
  3. Konfiguration in Debug ändern
  4. Konfigurationseigenschaften> C / C ++> Allgemein> Zusätzliche Include-Verzeichnisse: Fügen Sie C:\gtest\include
  5. Konfigurationseigenschaften> C / C ++> Codegenerierung> Laufzeitbibliothek: Wenn Ihr Code mit einer Laufzeit-DLL verknüpft ist, wählen Sie Multithread-Debug-DLL (/ MDd). Wenn nicht, wählen Sie Multi-threaded Debug (/ MTd).
  6. Konfigurationseigenschaften> Linker> Allgemein> Zusätzliche Bibliotheksverzeichnisse: Fügen Sie C:\gtest\msvc\gtest\Debug oder C:\gtest\msvc\gtest-md\Debug , abhängig vom Speicherort von gtestd.lib
  7. Konfigurationseigenschaften> Linker> Eingabe> Zusätzliche Abhängigkeiten: Fügen Sie gtestd.lib

Alles überprüfen funktioniert

  1. Öffnen Sie das cpp in Ihrem Testprojekt, das die function main() .
  2. Fügen Sie den folgenden Code ein:

     #include "stdafx.h" #include  #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 } 
  3. Debug> Debuggen starten

Wenn alles funktioniert hat, sollte das Konsolenfenster erscheinen und Ihnen die Testergebnisse anzeigen.

Ich habe ein Video-Tutorial über das Setup gemacht: http://www.youtube.com/watch?v=mzSzwQMMRs

Wenn Sie keine eigene main () für Tests schreiben möchten, können Sie die in gtest_main.lib definierte function main () verwenden, aber dann erhalten Sie Linker-Fehler “Einstiegspunkt muss definiert sein” in VS2012. Setzen Sie in Ihrem Testprojekt ProjectProperties-> Linker-> System-> SubSystem auf “Console”, da VS2012 nach einem Einstiegspunkt namens “main ()” sucht und es in gtest_main.lib findet (vorausgesetzt, Sie haben eine Verbindung hergestellt) es richtig).

Nachdem ich gtest gebaut habe, habe ich Folgendes getan:

  1. Füge \ mypath \ gtest-1.0.1 \ Debug (oder Release) zu allgemeinen Eigenschaften-> Linker-> Allgemein-> Weitere Bibliotheksverzeichnisse hinzu
  2. Fügen Sie gtest.lib und gtest_main.lib zu Common Properties-> Linker-> Input-> Additional Dependencies hinzu

Danach schreibe ich einfach meine Tests mit TEST oder TEST_F und kompiliere sie zusammen mit meiner Hauptfunktion:

 int main(int argc, char** argv) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } 

In Microsoft Visual Studio verursacht falsch konfigurierter Laufzeitbibliothekstyp Verbindungserrors.

VS 2005 (und 2008) verwendet standardmäßig Multithread-DLL oder Multithread-Debug-DLL. Die Google Test-Bibliothek verwendet jedoch standardmäßig die Debug-Laufzeit mit Mulithreaded oder Multithreaded.

Wählen Sie den entsprechenden Laufzeitbibliothekstyp für die Google-Testbibliothek aus. (in Konfigurationseigenschaften -> Codegenerierung -> Laufzeitbibliothek).

Viele Fehler, dauerte eine Weile zu beheben.

Hier sind die einfachen Schritte:

# Laden Sie die ZIP-Datei von Google unter folgender Adresse herunter: https://github.com/google/googletest

# Googeltest Visual Studio-Lösung

 Open C:\googletest\googletest\msvc\2010\gtest.sln Change "Solution configuration" from "Debug" to "Release" Build Solution creates gtest.lib 

# Dein Projekt:

 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)