0Pricing
C++ Academy · Урок

Настройка 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 build
  • cmake --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 — локальная установка не требуется.

Все уроки этого курса

  1. Настройка GTest
  2. Проверки и сопоставители
  3. Фикстуры и настройка
  4. Имитация с GMock
← Назад к C++ Academy