用于集成 Visual Studio 单元测试的 CMake 文件

mik*_*who 3 c++ unit-testing cmake visual-studio

Visual Studio 2017 已集成 C++ 单元测试(本机、谷歌测试、ctest 等)。如何创建一个 CMakeLists.txt 文件来创建这样的项目,该项目将使用集成的 IDE 测试,例如使用 google 测试或本机 microsoft 单元测试框架?不幸的是,Microsoft 的所有示例都只是在 Visual Studio 中创建项目,而不是从 CMake 文件开始。

任何帮助表示赞赏,谢谢!

Dam*_*ian 10

迈克

我使用 Google Test 项目设置了一个小示例,该项目适用于集成 IDE 测试。

创建一个空目录并保存这两个文件:

CMakeLists.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)

测试.cpp

#include <gtest/gtest.h>

TEST(ABC, TEST1) {
  EXPECT_EQ(true, true);
}
Run Code Online (Sandbox Code Playgroud)

在命令提示符类型

mkdir build
cd build
cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/dev/vcpkg/scripts/buildsystems/vcpkg.cmake"
Run Code Online (Sandbox Code Playgroud)

注意:我有 vcpkg install gtest

C:\dev\vcpkg>vcpkg.exe install gtest
Run Code Online (Sandbox Code Playgroud)

确保你在 Visual Studio 2017 中安装了这个
在此处输入图片说明

在 Tools > Options > Test Adapter for Google Test 中,将正则表达式设置为 .exe
在此处输入图片说明

构建解决方案并在测试资源管理器中按全部运行
在此处输入图片说明

第一次运行它会找到测试用例

[12/3/2018 8:38:41 AM Informational] ------ Run test started ------
[12/3/2018 8:38:42 AM Warning] Could not locate debug symbols for 'C:\dev\cpptests\GoogleTest\build\Debug\runUnitTests.exe'. To make use of '--list_content' discovery, ensure that debug symbols are available or make use of '<ForceListContent>' via a .runsettings file.
[12/3/2018 8:38:42 AM Informational] Test Adapter for Google Test: Test execution starting...
**[12/3/2018 8:38:42 AM Informational] Found 1 tests in executable** C:\dev\cpptests\GoogleTest\build\Debug\runUnitTests.exe
[12/3/2018 8:38:42 AM Informational] Running 1 tests...
[12/3/2018 8:38:42 AM Informational] Google Test execution completed, overall duration: 00:00:00.2390446
[12/3/2018 8:38:42 AM Informational] ========== Run test finished: 1 run (0:00:01.2668844) ==========
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助?

  • 起初,我不明白为什么它对我不起作用。VS和cmake仍然找不到gtest包。然后我想通了。我必须显式安装 x64 软件包。.\vcpkg 安装 gtest:x64-windows (3认同)
  • 另一件事,如果在安装软件包后执行:“.\vcpkg.exe集成安装”,它将连接安装到VS中的所有软件包,然后您不需要使用为VS指定的CMAKE_TOOLCHAIN_FILE来运行cmake来查看软件包。 (2认同)