> For the complete documentation index, see [llms.txt](https://skkv-itmo.gitbook.io/c-cpp-cookies/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://skkv-itmo.gitbook.io/c-cpp-cookies/testing/gtest/gtest-vs.md).

# Gtest в VS

Подробная статья по настройке в Visual Studio: <https://learn.microsoft.com/ru-ru/visualstudio/test/how-to-use-google-test-for-cpp?view=vs-2022>

Для создания проектов с автоматической настройкой gtest необходимо поставить через Visual Studio Installer в компоненте рабочей нагрузки "Разработка классических приложений на C++" "Test Adapter for Google Test".

![](https://learn.microsoft.com/ru-ru/visualstudio/test/media/vs-2022/cpp-google-component.png?view=vs-2022)

После чего при создании проекта появятся дополнительный шаблон "Google Test".

![](https://learn.microsoft.com/ru-ru/visualstudio/test/media/vs-2022/cpp-gtest-new-project.png?view=vs-2022)

## Добавление проекта Google Test

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

При создании проекта Google Test можно выбрать тип библиотеки, которая будет генерироваться этим проектом.

После создания проекта в "Сервис - Параметры - Адаптер тестов для Google Test" можно установить дополнительные опции для запуска и сканирования тестов.

Например, в `Additional test execution parameters` можно установить фильтры тестов или другие [параметры для `gtest`](https://google.github.io/googletest/advanced.html).

## Добавление директив include

В CPP-файле теста необходимо добавить необходимые директивы `#include`, чтобы типы и функции программы были доступны коду теста. Как правило, программа находится в иерархии папок на один уровень выше. Поэтому если ввести `#include "../"`, то по дальнейшим подсказкам GUI можно без проблем задать относительный путь до ваших заголовочных файлов.

## Выполнение модульных тестов из консоли

После настройки проектов в случае, если в функции `main()` используется `::testing::InitGoogleTest(&argc, argv);`, можно запустить программу как обычно (CTRL + F5 или запуск с GUI) и в консоли увидеть результаты тестирования:

## Выполнение модульных тестов с помощью обозревателя тестов

С помощью [обозревателя тестов](https://learn.microsoft.com/ru-ru/visualstudio/test/run-unit-tests-with-test-explorer?view=vs-2022) можно запускать модульные тесты из Visual Studio или сторонних проектов модульного тестирования.

Кроме того, обозреватель тестов позволяет группировать тесты по категориям, фильтровать список тестов, а также создавать, сохранять и запускать списки воспроизведения тестов.

При выполнении, написании и повторном запуске тестов обозреватель тестов отображает результаты в группах *Неудачные тесты*, *Пройденные тесты*, *Пропущенные тесты* и *Не запущенные тесты*. В области сведений в нижней или боковой части окна обозревателя тестов отображается сводка тестового запуска.

В области сведений о тесте отображаются следующие сведения.

* Имя исходного файла и номер строки метода теста.
* Состояние теста.
* Время, затраченное на выполнение метода теста.

Если тест не пройден, в области сведений также отображается следующее:

* сообщение, возвращенное платформой модульного тестирования для теста;
* трассировка стека во время сбоя теста.

При каждом запуске проводится сканирование тестов, и в случае обнаружения новых тестов, они отображаются в обозревателе тестов.

При запуске, записи и повторном запуске тестов результаты в обозревателе тестов отображаются в стандартных группах Проект, Пространство имен и Класс. Есть возможность изменить способ группировки тестов обозревателем тестов по нажатию ПКМ по заголовку списка тестов.

Большую часть работы по поиску, организации и выполнению тестов можно выполнять из панели инструментов обозревателя тестов.

![](https://learn.microsoft.com/ru-ru/visualstudio/test/media/vs-2022/test-explorer-toolbar-diagram-17-0.png?view=vs-2022)

`Run all` (или `CTRL + R, V`) пересобирает все проекты в решении, после чего запускает все тесты

Чтобы выполнить все тесты в группе по умолчанию, выберите значок `Run selected tests`, а затем группу в меню.

Чтобы запустить модульные тесты после каждой локальной сборки, на панели инструментов обозревателя тестов щелкните значок "Параметры" и выберите в меню пункт Выполнить тесты после сборки.
