Настройка GTest
Подключайте и запускайте фреймворк
«Настройка GTest» — бесплатный урок C++ Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C++ Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C++ Academy содержит 4 уроков всего.
Зачем нужен тестовый фреймворк?
Google Test (GTest) — широко используемый фреймворк модульного тестирования для C++. Он предоставляет регистрацию тестов, разнообразные проверки, тестовые фикстуры и понятные отчёты, позволяя автоматически проверять код.
Получение GTest
Распространённые способы получить GTest:
- Системный пакет (например,
libgtest-dev) - FetchContent в CMake, загружающий код с GitHub
- Включённый в проект подмодуль
Для новых проектов наиболее переносимым вариантом является FetchContent.
CMake с FetchContent
Минимальная настройка CMake загружает Google Test и подключает его.
# CMakeLists.txt
include(FetchContent)
FetchContent_Declare(
googletest
URL https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip
)
FetchContent_MakeAvailable(googletest)
add_executable(my_tests test_main.cpp)
target_link_libraries(my_tests GTest::gtest_main)Ваш первый тест
Тест объявляется с помощью макроса TEST, которому передаются имя набора тестов и имя теста. Внутри используются проверки.
#include <gtest/gtest.h>
int add(int a, int b) { return a + b; }
TEST(MathTest, AddsPositive) {
EXPECT_EQ(add(2, 3), 5);
}main() не нужен
Связывание с GTest::gtest_main предоставляет функцию main(), которая запускает все зарегистрированные тесты. Вам нужно написать только сами тесты.
Написание собственного main
Если вам нужна собственная точка входа, самостоятельно инициализируйте GTest.
#include <gtest/gtest.h>
int main(int argc, char** argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}Сборка и запуск
После настройки CMake выполните сборку и запуск.
cmake -S . -B buildcmake --build build./build/my_tests
GTest выводит сводку пройденных и непройденных тестов с цветовой подсветкой.
Чтение вывода
Для каждого теста сначала выводится [ RUN ], затем [ OK ] или [ FAILED ]. В последней строке указано количество пройденных тестов. При сбоях приводятся файл, строка и ожидаемое и фактическое значения.
Запуск части тестов
Используйте флаг --gtest_filter, чтобы запускать только подходящие тесты, например ./my_tests --gtest_filter=MathTest.*. Это ускоряет целенаправленную отладку.
Интеграция с CTest
Вызовите enable_testing() и зарегистрируйте исполняемый файл с помощью gtest_discover_tests, чтобы ctest мог запускать ваш набор тестов в CI.
# CMakeLists.txt
enable_testing()
include(GoogleTest)
gtest_discover_tests(my_tests)Правильный рабочий процесс
Напишите не проходящий тест, реализуйте код и убедитесь, что тест проходит. Поддерживайте тесты быстрыми и независимыми, чтобы запускать их после каждого изменения.
Быстрая проверка
Вспомните, откуда берётся main().
Итоги
Вы настроили Google Test.
- Получить его можно через FetchContent, пакет или подмодуль
TEST(Suite, Name)объявляет тест- Подключите
gtest_main, чтобы автоматически получитьmain() - Собирайте, запускайте, фильтруйте тесты и интегрируйте их с CTest
Часто задаваемые вопросы
Урок «Настройка GTest» бесплатный?
Да — полный текст урока «Настройка GTest» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C++ Academy, подпишись на CoddyKit PRO. Курс C++ Academy содержит 4 уроков всего.
Чему я научусь в уроке «Настройка GTest»?
Подключайте и запускайте фреймворк Ты практикуешь C++ Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C++ Academy?
Предыдущий опыт не требуется. C++ Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Настройка GTest»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C++ Academy?
Да. Каждый урок C++ Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Настройка GTest
- Проверки и сопоставители
- Фикстуры и настройка
- Имитация с GMock