← Ко всем open source проектам

GoogleTest

google/googletest

GoogleTest — фреймворк Google для тестирования и мокирования C++-кода.

Форки 10,807
Автор google
Язык C++
Лицензия BSD-3-Clause
Обновлено 2026-06-27

Что это такое

GoogleTest — фреймворк Google для тестирования C++-кода. В одном репозитории теперь живут GoogleTest и GoogleMock, потому что эти проекты тесно связаны и логично сопровождаются вместе.

Проект нужен C++-командам, которым требуется повторяемая проверка поведения: тестовые случаи, утверждения, фикстуры, параметризованные тесты и моки зависимостей.

Документация проекта размещена на GitHub Pages, а релизы задают требования к языковому стандарту. Например, версия 1.17.0 требует как минимум C++17.

Что внутри

GoogleTest дает структуру тестов и набор утверждений, а GoogleMock помогает описывать ожидания к зависимостям. Вместе они закрывают как простую проверку функций, так и более сложные сценарии с подменой внешних объектов.

Проект поддерживает разные платформы и используется во множестве C++-систем. Для языка, где ошибки памяти и поведения часто дорого стоят, стабильный тестовый фреймворк особенно важен.

Репозиторий также показывает направление развития: документация обновляется отдельно, релизы фиксируют требования, а проект постепенно планирует зависимость от Abseil.

Как используют

GoogleTest подключают к сборке C++-проекта и пишут тестовые файлы рядом с кодом. Затем тесты запускаются локально и в автоматической проверке перед объединением изменений.

Фикстуры полезны, когда несколько тестов требуют одинаковой подготовки. Моки нужны, когда объект зависит от сети, файловой системы, базы данных или другой сложной части.

Ограничение в том, что фреймворк не исправляет архитектуру сам по себе. Если код трудно изолировать, тесты будут громоздкими, а моки начнут скрывать плохие границы модулей.

Форма теста

Синтаксис C++ здесь показан как обычный текст, потому что страница каталога подсвечивает только ограниченный набор языков. Важно увидеть форму: тест, действие и проверка.

Минимальная форма теста

Пример показывает структуру проверки: подготовить значение, выполнить действие и явно описать ожидаемый результат.

Язык: Plain text
TEST(MathTest, AddsTwoNumbers) {
  int result = Add(2, 3);
  EXPECT_EQ(result, 5);
}

Сильные стороны и ограничения

Сильная сторона GoogleTest — зрелость и узнаваемость. Новый участник C++-проекта часто уже понимает, как читать такие тесты.

Слабая сторона — необходимость дисциплины в проектировании. Если проверять только внутренние детали, тесты становятся хрупкими и мешают менять реализацию.

GoogleTest подойдет библиотекам, системным приложениям, встроенному коду и большим C++-проектам. Для проверки пользовательского интерфейса или распределенной системы нужны дополнительные уровни тестирования.