使用 Visual Studio 2019 和 cmake 进行谷歌测试

Sen*_*ns4 8 c++ unit-testing cmake googletest visual-studio

我正在尝试使用 Visual Studio 2019 和 cmake 设置 google 测试。

这是我的 CMakeFileLists.txt 内容:

cmake_minimum_required(VERSION 3.0)
project(test_me)

# GTest
enable_testing()
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})

# Unit Tests
# Add test cpp file
add_executable( runUnitTests tests.cpp)
# Link test executable against gtest & gtest_main
target_link_libraries(runUnitTests ${GTEST_BOTH_LIBRARIES})
add_test( runUnitTests runUnitTests )
Run Code Online (Sandbox Code Playgroud)

我的tests.cpp 文件如下所示:

#include <gtest/gtest.h>

TEST(ABC, TEST1) {
    EXPECT_EQ(true, true);
}

TEST(ABC, TEST2) {
    ASSERT_TRUE(2 == 2);
}
Run Code Online (Sandbox Code Playgroud)

这个最小的例子来自另一个 stackoverflow 问题: CMake file forintegrated Visual Studio unittesting

这就是我构建应用程序后得到的结果: 在此输入图像描述

名为 runUnitTests 的单个测试。然而,在上面问题的答案图片中,我希望看到每个测试函数的名称。像这样的东西:

runUnitTests
- ABC
  - TEST1
  - TEST2
Run Code Online (Sandbox Code Playgroud)

我已经使用新的 Visual Studio 解决方案对其进行了测试,并添加了一个谷歌单元测试项目。将测试函数粘贴到该项目中,结果如下图所示:

在此输入图像描述

所以这很好用。它一定与open a local folder我用来处理我的 cmake 项目的方法有关。

Gui*_*dio 3

这是您问题的可能答案:

cmake_minimum_required(VERSION 3.10)

project(test_me)

enable_testing()

find_package(GTest REQUIRED)
include(GoogleTest)

add_executable(runUnitTests tests.cpp)
target_link_libraries(runUnitTests GTest::GTest GTest::Main)

gtest_discover_tests(runUnitTests)
Run Code Online (Sandbox Code Playgroud)

发现测试二进制文件中测试的完整列表的命令是gtest_discover_tests(),它是 CMake 模块的一部分GoogleTest(您可以使用 本地查看文档cmake --help-module GoogleTest)。该模块已随 CMake 3.9 引入,但该命令gtest_discover_tests()仅在 CMake 3.10 中添加。但是,您应该注意,如果您的测试二进制文件有很多测试用例,这会显着减慢速度。