# 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`, а затем группу в меню.

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://skkv-itmo.gitbook.io/c-cpp-cookies/testing/gtest/gtest-vs.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
