Wie installiere ich Googletest?

Wie installiere ich Googletest?

Ich suchte nachGoogletestsverwende Myon, aber es sieht so aus, als ob Ubuntu keine Pakete dafür hat. Muss ich es mithilfe von Quellen installieren?

Antwort1

Neue Informationen:

Es ist erwähnenswert, dass libgtest0 nicht mehr existiert. Seit 2013 oder so (ich bin mir nicht sicher, wann die Änderung erfolgte) siehe diese Frage:

Warum sind für den Google-Test keine Bibliotheksdateien installiert?


Alte Antwort vor 2012:

Es befindet sich in den Ubuntu-Repositories

sudo apt-get install libgtest0 libgtest-dev

Siehe auchman gtest-config

Antwort2

Minimal ausführbares Beispiel

Da Debian/Ubuntu sich weigern, eine vorgefertigte Version zu packen, wie unter folgendem Link erwähnt:Warum sind für den Google-Test keine Bibliotheksdateien installiert?Ich werde es einfach klonen und selbst erstellen (oder es in einem echten Projekt als Untermodul hinzufügen):

git clone https://github.com/google/googletest
cd googletest
git checkout b1fbd33c06cdb0024c67733c6fdec2009d17b384
mkdir build
cd build
cmake ..
make -j`nproc`
cd ../..

dann verwende ich es mit meiner Testdatei main.cpp:

g++ \
  -Wall \
  -Werror \
  -Wextra \
  -pedantic \
  -O0 \
  -I googletest/googletest/include \
  -std=c++11 \
  -o main.out \
  main.cpp \
  googletest/build/lib/libgtest.a \
  -lpthread \
;

main.cpp

#include <gtest/gtest.h>

int myfunc(int n) {
    return n + 1;
}

TEST(asdfTest, HandlesPositiveInput) {
    EXPECT_EQ(myfunc(1), 2);
    EXPECT_EQ(myfunc(2), 3);
}

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

um die erwartete Ausgabe zu erhalten:

[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from asdfTest
[ RUN      ] asdfTest.HandlesPositiveInput
[       OK ] asdfTest.HandlesPositiveInput (0 ms)
[----------] 1 test from asdfTest (0 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (0 ms total)
[  PASSED  ] 1 test.

Alternativ können Sie die mainFunktion auch aus der main.cppDatei entfernen und stattdessenverwenden Sie die Standardeinstellung vonlibgtest_main.a:

g++ \
  -Wall \
  -Werror \
  -Wextra \
  -pedantic \
  -O0 \
  -I googletest/googletest/include \
  -std=c++11 \
  -o main.out \
  main.cpp \
  googletest/build/lib/libgtest.a \
  googletest/build/lib/libgtest_main.a \
  -lpthread \
;

Getestet auf Ubuntu 20.04.

verwandte Informationen