Вчера я провел большую часть дня, пытаясь заставить проект GTest CMake работать в VS2022. Все собирается и компилируется, но обозреватель тестов не показывает никаких тестов. Нажатие кнопки «Выполнить все» приводит к тому, что он находится в бесконечном цикле, не продвигаясь вперед. Я сделал минимальный репродукция здесь https://github.com/GingerbreadFred/GoogleTestRepro/.
CMakeLists для проекта приведен ниже.
cmake_minimum_required(VERSION 3.5)
project(HelloWorldTest)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
include(FetchContent)
FetchContent_Declare(
googletest
URL https://github.com/google/googletest/archive/f8d7d77c06936315286eb55f8de22cd23c188571.zip
)
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest)
enable_testing()
add_executable(HelloWorld
src/HelloWorld.cpp
)
target_link_libraries(HelloWorld GTest::gtest_main)
include(GoogleTest)
gtest_discover_tests(HelloWorld)
И HelloWorld.cpp
#include <gtest/gtest.h>
TEST(HelloWorld, Test)
{
int i = 0;
EXPECT_EQ(0, i);
}
Тесты работают, если я выполняю Test -> Run CTests, но обозреватель тестов не обращает на это внимания. Я не вижу в окне вывода ничего, что могло бы подсказать, в чем проблема. Честно говоря, я в тупике.
Я добавил к вопросу содержимое HelloWorld.cpp, как видите, оно довольно минимальное. Я не уверен, что проблема в том, что исполняемый файл теста неверен. Эта программа создает действительный исполняемый файл, который я могу запустить вручную и создать список тестов из .\HelloWorld.exe --gtest_list_tests. Запуск main() из C:\Work\Test\GTestTest\out\build\x64-Debug_deps\googletest- src\googletest\src\gtest_main.cc HelloWorld. Тест





Обозреватель тестов в Visual Studio не распознает тестовые сайты с произвольными именами. В названии тестовых костюмов должен быть суффикс «Тест».
TEST(HelloWorldTest, Test)
{
int i = 0;
EXPECT_EQ(0, i);
}
Я понял, что это проблема Visual Studio (см. мой ответ). Обратите внимание, что это утверждение неверно. Теперь у меня есть рабочий пример со следующим именем теста TEST(Hello, World) { int i = 0; EXPECT_EQ (0, я); }
На самом деле это оказалось проблемой конфигурации визуальной студии. Похоже, существует конфликт с интеграцией CTest в Visual Studio и адаптером тестирования Unreal Engine. Удаление адаптера тестирования Unreal Engine заставило все работать. Я открою вопрос команде Visual Studio.
Вероятно, наблюдаемое поведение вызвано неправильным исполняемым файлом теста, который не позволяет запрашивать список тестов. Как в том недавнем вопросе (обязательно прочитайте ответ самому себе ). Если вы считаете, что ваш исполняемый файл теста написан правильно, добавьте его код (
src/HelloWorld.cpp) в пост с вопросом (как минимальный воспроизводимый пример).