Как пользоваться Google test c

Я работаю над проектом Visual Studio Code в Windows и хочу использовать Google Test. Я могу включить файл заголовка только тогда, когда я пытаюсь создать проект, я получаю несколько неопределенных ссылок, которые можно увидеть в списке ошибок ниже.

Я установил Google Test в C: googleTest. Затем я выполнил следующие команды внутри папки:

cmake . cmake —build . navigated to the googletestgoogletestgtest.sln And build this with the help of Visual Studio i build the solutions by pressing build all under build menu.

Что я пробовал: я добавил следующее в свои аргументы task.json.

«-l», «gtest», «-l», «gtest_main»

Что привело к этой ошибке:

> Executing task: «»C:Program Filesmingw-w64x86_64-8.1.0-posix-seh-rt_v6-rev0mingw64bing++.exe» -g «C:Usersmelvin.wiegmanOneDrive — FourtressCursusDesign Patterns in Modern C++SingletonTestProblemSingleton*.cpp» -o «C:Usersmelvin.wiegmanOneDrive — FourtressCursusDesign Patterns in Modern C++SingletonTestProblemSingleton.vscodemyProgram.exe» -I C:/Boost/include/boost-1_73 -I C:/GoogleTest/googletest/googletest/include -I C:/GoogleTest/googletest/bin -l gtest -l gtest_main» < C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lgtest C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lgtest_main collect2.exe: error: ld returned 1 exit status The terminal process «C:WINDOWSSystem32cmd.exe /d /c «»C:Program Filesmingw-w64x86_64-8.1.0-posix-seh-rt_v6-rev0mingw64bing++.exe» -g «C:Usersmelvin.wiegmanOneDrive — FourtressCursusDesign Patterns in Modern C++SingletonTestProblemSingleton*.cpp» -o «C:Usersmelvin.wiegmanOneDrive — FourtressCursusDesign Patterns in Modern C++SingletonTestProblemSingleton.vscodemyProgram.exe» -I C:/Boost/include/boost-1_73 -I C:/GoogleTest/googletest/googletest/include -I C:/GoogleTest/googletest/bin -l gtest -l gtest_main»» terminated with exit code: 1.

Кажется, он не может правильно найти тестовую библиотеку Google, но я не знаю, связано ли это с тем, что я где-то забыл включить или, может быть, шаг, о котором я не знаю?

Написание модульных тестов в Visual Studio 2017 для C++

Может ли кто-нибудь сказать мне, как правильно добавить тест Google в мой проект и объяснить мне, что я делаю неправильно с включениями?

Как скрыть закладки в Гугл Хром на телефоне

C:UsersMELVIN~1.WIEAppDataLocalTempcc0Ew4Pg.o: In function `RECORDFINDERTESTS_SINGLETONTOTALPOPTEST_Test::TestBody()’: C:/Users/melvin.wiegman/OneDrive — Fourtress/Cursus/Design Patterns in Modern C++/Singleton/TestProblemSingleton/main.cpp:61: undefined reference to `testing::Message::Message()’ C:/Users/melvin.wiegman/OneDrive — Fourtress/Cursus/Design Patterns in Modern C++/Singleton/TestProblemSingleton/main.cpp:61: undefined reference to `testing::internal::AssertHelper::AssertHelper(testing::TestPartResult::Type, char const*, int, char const*)’ C:/Users/melvin.wiegman/OneDrive — Fourtress/Cursus/Design Patterns in Modern C++/Singleton/TestProblemSingleton/main.cpp:61: undefined reference to `testing::internal::AssertHelper::operator=(testing::Message const, int const, int const const constC:WINDOWSSystem32cmd.exe /d /c «»C:Program Filesmingw-w64x86_64-8.1.0-posix-seh-rt_v6-rev0mingw64bing++.exe» -g «C:Usersmelvin.wiegmanOneDrive — FourtressCursusDesign Patterns in Modern C++SingletonTestProblemSingleton*.cpp» -o «C:Usersmelvin.wiegmanOneDrive — FourtressCursusDesign Patterns in Modern C++SingletonTestProblemSingleton.vscodemyProgram.exe» -I C:/Boost/include/boost-1_73 -I C:/GoogleTest/googletest/googletest/include -I C:/GoogleTest/googletest/bin»» terminated with exit code: 1.

Мои файлы проекта:

3 Простейший способ создания юнит тестов на C++


#include #include #include #include #include #include #define GTEST_LANG_CXX 1 #include using namespace std; class SingletonDatabase < SingletonDatabase() < cout (s2); capitals[s] = pop; > > map capitals; public: SingletonDatabase(SingletonDatabase const void operator=(SingletonDatabase const static SingletonDatabase static SingletonDatabase db; return db; >int get_population(const string return capitals[name]; >>; struct SingletonRecordFinder < int total_population(vectornames) < int result; for (auto result += SingletonDatabase::get().get_population(name); >return result; > >; TEST(RECORDFINDERTESTS, SINGLETONTOTALPOPTEST) < SingletonRecordFinder rf; vectornames = < «Germany», «Tokyo»>; int tp = rf.total_population(names); EXPECT_EQ(25000000+140000000, tp); > int main(int ac, char* av[])
< «version»: «2.0.0», «tasks»: [ < «type»: «shell», «label»: «C/C++: g++.exe build active file», «command»: «C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin\g++.exe», «args»: [ «-g», «$\*.cpp», «-o», «$\myProgram.exe», «-I», «C:/Boost/include/boost-1_73», «-I», «C:/GoogleTest/googletest/googletest/include», «-I», «C:/GoogleTest/googletest/bin», «-L», «C:/GoogleTest/googletest/lib/Debug» ], «options»: < «cwd»: «$» >, «problemMatcher»: [ «$gcc» ], «group»: < «kind»: «build», «isDefault»: true >> ] >
< «configurations»: [ < «name»: «GCC», «includePath»: [ «$/**», «C:/GoogleTest/googletest/**» ], «defines»: [ «_DEBUG», «UNICODE», «_UNICODE» ], «windowsSdkVersion»: «10.0.18362.0», «compilerPath»: «C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.26.28801/bin/Hostx64/x64/cl.exe», «cStandard»: «c11», «cppStandard»: «c++17», «intelliSenseMode»: «msvc-x64» > ], «version»: 4 >
< // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 «version»: «0.2.0», «configurations»: [ < «name»: «g++.exe — Build and debug active file», «type»: «cppdbg», «request»: «launch», «program»: «$\myProgram.exe», «args»: [], «stopAtEntry»: false, «cwd»: «$», «environment»: [], «externalConsole»: false, «MIMode»: «gdb», «miDebuggerPath»: «C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin\gdb.exe», «setupCommands»: [ < «description»: «Enable pretty-printing for gdb», «text»: «-enable-pretty-printing», «ignoreFailures»: true >], «preLaunchTask»: «C/C++: g++.exe build active file» > ] >

Новая политика Google что это

Источник: question-it.com

Быстрый старт с Google Test

Google Test — это фреймворк от Google для юнит-тестирования кода на С++. Общей архитектурой он слегка напоминает общепринятые boost::test и CppUnit, хотя слегка отличается в деталях (как по мне — в лучшую сторону). Большая обзорная статья этого фреймворка уже как-то пробегала на Хабре, но нынче она в каком-то побитом состоянии (код не отображается), да и кажется мне слишком сложной для начала работы. Поэтому я коротко опишу «Hello world» на Google Test, указав на несколько потенциальных проблем, с которыми вы можете столкнуться, используя Google Test при разработке под Visual Studio.

Сборка

  1. Загружаем тут или тут. Вы должны скомпилировать тот же вариант, с которыми собирается проект, который вы собираетесь тестировать. Это важно, иначе получите кучу невразумительных ошибок линкера. Проверить, с какими ключами собирается ваш проект можно вот тут: Код Google Test успешно собирается Visual Studio 20082010 (другими не пробовал). На выходе вы получите файлы gtestd.libgtest.lib (для дебаг и релиз конфигураций). Со сборкой на этом всё.

Hello world

  1. Открываем Solution, который вы собираетесь тестировать. Добавляем в него новый проект (консольное С++ приложение).
  2. В этот проект добавляем зависимость от скомпиленных на втором шаге библиотек gtestd.libgtest.lib, путь к include-папке Google Test, зависимости к тем проектам в вашем решении, которые вы собираетесь тестировать.
  3. Пишем в главном файле тестового проекта следующий код:

#include «stdafx.h» #include «gtest/gtest.h» class CRectTest : public ::testing::Test < >; TEST_F(CRectTest, CheckPerimeter) < CSomeRect rect; rect.x = 5; rect.y = 6; ASSERT_TRUE(rect.GetPerimeter() == 30); >int main(int argc, char **argv)

Здесь мы тестируем некий класс прямоугольника на правильность вычисления площади.

  • Запускаем тестовый проект. Видим следующее:
  • Как в Гугл почте сделать уведомление о прочтении

    Грабли

    Номер один

    Не ошибитесь с выбором компилируемого решения на втором шаге. Если ошибетесь и забудете — выяснить в чём ошибка позже будет фактически не реально.

    Номер два

    Если вы планируете разнести основное тестовое приложение и сами тесты по разным проектам, вы столкнётесь с одной хитрой проблемой. Дело в том, что гугловские юнит-тесы по сути являются статическими классами и компилятор Visual C++ из-за имеющегося нём бага попросту выкинет эти классы по ходу компиляции. Для избежания этого бага нужно выкрутиться способом, описанным вот тут.

    Номер три

    Не забывайте, что тестируемые статические библиотеки нужно не достаточно добавить в зависимости (Dependencies) тестового проекта, их нужно добавить в ссылки (References), иначе получим ошибки линковки.

    Дополнительные материалы

    Успехов в тестировании.
    С Новым Годом!

    Источник: savepearlharbor.com

    Software of space

    После прочтения книг по TDD и внедрения этой методики в мои проекты на C#, я решил разобраться как с этим дела обстоят в Visual С++. Тем более, что для тестирования математических расчетов я пользовался ручкой и бумагой, что было очень утомительно и трудозатратно. Посмотрев материалы по тестированию кода на MSDN, мой выбор пал на Google test framework из-за нескольких причин:

    • простота установки;
    • интуитивно понятный язык написания тестов.
    • качаем последнюю версию framework-ка;

    • затем в свойствах проекта добавляем include path:

    компилируем проект, если все без ошибок, тогда переходим к следующему шагу;
    добавляем непосредственно проект теста (обычное консольное приложение);

    затем в свойствах проекта добавляем include path(только в отличие от аналогичного шага в проекте googleTest тут мы еще добавляем папку с тестируемым проектом):

    после этого добавляем строчку _VARIADIC_MAX=10 в определения препроцессора (полностью все аналогично проекту googleTest );

    Как установить Google Chrome на телевизор tcl

    добавляем ссылки на два наших проекта:

    все, теперь можно писать тесты:

    #include «gtest/gtest.h» #include «Date_Time.h» #include «Date_Time.cpp» #include «Atmosphera.h» #include «Atmosphera.cpp» #include «OrbitElements.h» #include «OrbitElements.cpp» #include «Vector.h» #include «Vector.cpp» #include «Spacecraft.h» #include «Spacecraft.cpp» #include «Soyuz.h» #include «Soyuz.cpp» class TestVector : public ::testing::Test < protected: void SetUp() < Vector::f = 110; Vector::ap = 16; Date_Time DataTime(2011,10,05); vect = new Vector(1816, 70500, -4887.4796260, -1988.8661830, 4242.4879740, -0.536599240, -6.3971388400, -3.612259210, 0.04158185, DataTime); soyuz = new Soyuz(*vect, 6746.0, 1158.0, 2886.0, 300.0, 302.0, 115.20, 0, 0.385080, -0.036830, 0.0, 0.008234, 49.40, 273.00, 200, 6, 1, 2); >void TearDown() < delete vect; delete soyuz; >Vector* vect; Soyuz* soyuz; >; TEST_F(TestVector, z_eq_zero) < vect->Prognoz((unsigned int)1817); double z = vect->operator[](3); ASSERT_NEAR(0, z, 0.001)

    Источник: aykspace.blogspot.com

    Рейтинг
    Загрузка ...