昨天我花了一整天的时间试图让 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);
}
如果我执行“测试”->“运行 CTests”,则测试会起作用,但测试资源管理器不会注意到。我在输出窗口中看不到任何表明问题所在的内容。说实话我很困惑。
Visual Studio 中的测试资源管理器无法识别具有任意名称的测试站点。测试服名称中必须带有“Test”后缀。
TEST(HelloWorldTest, Test)
{
int i = 0;
EXPECT_EQ(0, i);
}