Gtest: Undefinierte Referenzen
Ich versuche, mit GoogleTest zum testen eine einfache Funktion, aber da ich den make
in meinem build-Ordner, der compiler wirft Undefined Reference
Fehlermeldungen bei mir. Ich habe auf die gtest header-Datei, so bin ich nicht sicher, was falsch ist. Irgendwelche Ideen? Ich bin neu in dem ganzen Thema sowohl unix-und unit-Tests , so konnte ich sehr gut etwas fehlen einfach. Vielen Dank im Voraus!
Fehlermeldungen:
CMakeFiles/Proj2.dir/main.cpp.o: In function `main':
main.cpp:(.text+0x1e): undefined reference to `testing::InitGoogleTest(int*, char**)'
main.cpp:(.text+0x23): undefined reference to `testing::UnitTest::GetInstance()'
main.cpp:(.text+0x2b): undefined reference to `testing::UnitTest::Run()'
collect2: error: ld returned 1 exit status
main.cpp
#include "gtest/gtest.h"
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
Test.cpp
#include "gtest/gtest.h"
#include "Testable.h"
TEST(GetTwoTest, Two) {
EXPECT_EQ(2, GetTwo());
}
Testable.cpp
#include "Testable.h"
int GetTwo() {
return 3;
}
Hier ist meine CMakeLists.txt Datei:
cmake_minimum_required(VERSION 2.6)
SET(CMAKE_CXX_FLAGS "-std=gnu++11") #Turn on C++11 Support
set(FILES_TO_TEST Testable.cpp)
set(UNIT_TESTS Test.cpp)
set(MAIN_FILE main.cpp)
add_subdirectory(gtest) #Build all the gtest stuff
include_directories(gtest/include)
include_directories(.)
add_library(codeToTest ${FILES_TO_TEST})
add_executable(Proj2 ${MAIN_FILE})
target_link_libraries(Proj2 codeToTest)
add_executable(unit-test ${UNIT_TESTS})
target_link_libraries(unit-test gtest gtest_main rt pthread codeToTest)
Hinzugefügt cmake-tag
Beachten Sie, dass Google empfehlen, dass Sie NICHT bauen eine Bibliothek, sondern umfassen die GTest-code in Ihrem Projekt. Siehe code.google.com/p/googletest/wiki/...
Beachten Sie, dass Google empfehlen, dass Sie NICHT bauen eine Bibliothek, sondern umfassen die GTest-code in Ihrem Projekt. Siehe code.google.com/p/googletest/wiki/...
InformationsquelleAutor Vance | 2012-09-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein setup sieht auch nur fast richtig. Jedoch, Sie benötigen, um 2 separate
main
Funktionen, eine für die eigentliche ausführbareProj2
und die andere mit dem gtest und beinhaltet Funktionen für den test ausführenunit-test
.Könnten Sie tun dies, indem er 2 unterschiedliche main.cpp Dateien, sagen main.cpp und test_main.cpp. Die, die Sie gezeigt haben würde test_main.cpp und würden in der
add_executable(unit-test ...
Befehl.Ihre neue main.cpp hätte keine Verweise auf gtest, entweder enthält oder auf solche Funktionen.
InformationsquelleAutor Fraser
Vom linker-Fehler es ist offensichtlich, dass du nicht link gtest-Bibliothek mit dem test-Programm.
Sehen Primer:
Sehe gerade, das doc für die details Ihrer compiler und system.
Folgen Sie diesem link: stackoverflow.com/questions/8507723/...
InformationsquelleAutor PiotrNycz