c-cpp-cookies
  • Полезные материалы
    • About
  • Настройка окружения
    • Git
      • Git CLI
      • Git GUI
      • Git Web
      • Git в среде разработке
        • Visual Studio
        • Visual Studio Code
        • CLion
        • Qt Creator
    • Стандарты (они же ISO)
    • Qt about
    • IDE
      • Visual Studio Code
        • Код в Visual Studio Code
        • Разработка в Visual Studio Code
      • Visual Studio
        • Настройки Visual Studio и проектов
        • Код в Visual Studio
        • Visual Studio + GitHub
      • Qt + Qt Creator
        • Установка Qt и QtCreator
        • Примеры проектов на Qt
      • CLion
        • Настройки CLion
        • Код в CLion
        • CLion + GitHub
    • Компиляторы
      • Clang + Visual Studio
      • Clang + CLion
  • Best practices
    • Антипаттерны и способы улучшения кода
      • 0. Освобождение ресурсов
      • 1. Чтение данных из файла
      • 2. Открытие файлов
      • 3. Объявление переменных
      • 4. Выделение памяти
      • 5. Необдуманный код
      • 6. Глубокие if
      • 7. Длинные if
      • 9. Non-void функции
      • 10. Создание массивов
      • 11. Проверка формата файла
  • Сборка программы
    • Сборка программы
    • Системы сборки / Build systems
      • Проект и решение
      • Make
      • Ninja
      • CMake
      • MSBuild
    • Подключение внешних библиотек
    • Библиотеки
  • Отладка
    • Отладка / Debugging
    • Запуск программы
    • Точки останова / Breakpoints
      • Обычные точки останова / General breakpoint
      • Условные точки останова / Conditional breakpoint
      • Зависимые точки останова / Dependent breakpoint
      • Временные точки останова / Temporary breakpoint
      • Точки трассировки / Breakpoint actions и tracepoints
    • Стек вызовов / Call stack
    • Локальные переменные / Locals
    • Просмотр области памяти / Memory view
    • Исключения / Exceptions
  • Анализ
    • Поиск утечек памяти
    • Санитайзеры
  • Возможности IDE
    • Возможности IDE
    • Продвинутый текстовый редактор
    • Закладки / Bookmarks
    • Платформы / Platforms
    • Конфигурации сборки / Build configurations
    • Шаблонные проекты / Project templates
    • Терминал / Terminal
    • Сборка / Build
    • Запуск программы / Run program
    • Code style
    • Работа с Github Actions
  • Тестирование
    • Тестирование
    • Google test
      • Gtest в VS
      • Gtest в CLion
      • Gtest в VSCode
    • Покрытие кода (code coverage)
Powered by GitBook
On this page
  • Общая структура программы
  • Google Test Explorer for Visual Studio Code
  • GoogleTest Adapter
  1. Тестирование
  2. Google test

Gtest в VSCode

PreviousGtest в CLionNextПокрытие кода (code coverage)

Last updated 1 month ago

В Visual Studio Code есть набор расширений для работы с Google Test:

Далее представлен пример использования расширений.


Общая структура программы

project
├── build [CMake generated dir]
├── include [dir]
    ├── quat.hpp [header file]
├── src [dir]
    ├── main.cpp [source file]
├── test [dir]
    ├── tests.cpp [source file with unit tests]
├── CMakeLists.txt [file]
CMakeLists.txt
cmake_minimum_required(VERSION 3.22)

set(CMAKE_CXX_STANDARD 23)

project(gtest_program)

include_directories(include)
add_executable(program src/main.cpp)

enable_testing()
find_package(GTest CONFIG REQUIRED)

include_directories(include)
add_executable(gtest_program test/tests.cpp)
target_link_libraries(gtest_program PRIVATE GTest::gtest GTest::gtest_main)

add_test(NAME all_tests COMMAND gtest_program)

find_package находит и загружает настройки из внешнего проекта. В этом случае библиотека должна предоставить package configuration file. Путь с package configuration file должен быть указан в CMAKE_PREFIX_PATH при сборке проекта. Если find_package пакет был найден, то в окружении CMake создаются различные переменные, которые предоставляют информацию о найденном пакете. Переменные окружения описывают где находятся экспортируемые заголовочные файлы и исходные файлы пакетов, от каких библиотек зависит пакет, и где эти библиотеки находятся. Имена всегда имеют вид <имя пакета>_<свойство>:

<NAME>_FOUND - Если библиотека найдена, то устанавливается в true, иначе - ошибка
<NAME>_INCLUDE_DIRS or <NAME>_INCLUDES - Пути к заголовочным файлам, экспортируемым пакетом
<NAME>_LIBRARIES or <NAME>_LIBS - Библиотеки, экспортируемые пакетом
<NAME>_DEFINITIONS - ? 
vcpkg install gtest

В классическом режиме vcpkg устанавливает пути поиска CMake соответствующим образом, чтобы сделать установленные пакеты доступными через find_package(), find_library() и find_path().

enable_testing()

...

add_test(NAME all_tests COMMAND gtest_program)

Сборка с CMake:

mkdir build; cd build

cmake .. -DCMAKE_TOOLCHAIN_FILE="$($env:VCPKG_ROOT)/scripts/buildsystems/vcpkg.cmake"

cmake --build .

Добавляет тесты, которые будут запускаться после успешной сборки при вызове утилиты ctest.

При запуске собранного с тестами исполняемого файла (в примере выше – gtest_program) в поток вывода будут записаны логи тестирования:

.\build\Debug\gtest_program.exe
[==========] Running 5 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 5 tests from ctor
[ RUN      ] ctor.defaults
[       OK ] ctor.defaults (0 ms)
[ RUN      ] ctor.zero_float
[       OK ] ctor.zero_float (0 ms)
[ RUN      ] ctor.zero_double
[       OK ] ctor.zero_double (0 ms)
[ RUN      ] ctor.ctor_double
[       OK ] ctor.ctor_double (0 ms)
[ RUN      ] ctor.ctor_special
[       OK ] ctor.ctor_special (0 ms)
[----------] 5 tests from ctor (1 ms total)

[----------] Global test environment tear-down
[==========] 5 tests from 1 test suite ran. (2 ms total)
[  PASSED  ] 5 tests.

Google Test Explorer for Visual Studio Code

В CMakeLists.txt напротив add_tests появится опция запуска/перезапуска тестов. Также в разделе Testing будут отображаться все найденные тесты:

GoogleTest Adapter

Для использования данного расширения необходимо настроить launch.json с Debug-конфигурацией, например:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(Debug) Launch",
            "type": "cppvsdbg",
            "request": "launch",
            "program": "./build/Debug/gtest_program.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "console": "externalTerminal"
        }

    ]
}

После чего по опции в Status bar (левая нижняя стрелка)

можно запустить исполняемый файл с тестами.

В Google Tests обозревателе будут отображаться найденные тесты по их группам:

gtest можно установить при помощи ():

$($env:VCPKG_ROOT) – переменная окружения с путём до vcpkg. Подробнее:

Google Test Explorer for Visual Studio Code
GoogleTest Adapter
vcpkg
подробнее
vcpkg in CMake projects