首先通过FetchContent引入Google Test,再编写测试用例并创建测试可执行文件,接着用enable_testing()和add_test()注册测试,最后通过ctest运行测试。完整流程包括:1. 在CMakeLists.txt中使用FetchContent下载gtest;2. 编写被测函数及gtest测试代码;3. 配置target_link_libraries链接gtest_main和pthread;4. 调用enable_testing()并注册测试目标;5. 构建后运行ctest执行测试。关键点为正确链接库和启用测试功能。

在C++项目中使用CMake集成单元测试,是提升代码质量的关键步骤。主流做法是借助Google Test(gtest)框架,并通过CMake的CTest系统管理测试用例。下面介绍如何配置。
1. 安装并引入Google Test
Google Test是C++中最常用的单元测试框架。推荐通过CMake的FetchContent自动下载并编译,避免手动安装依赖。
在CMakeLists.txt中添加:
include(FetchContent)FetchContent_Declare( googletest URL https://www.php.cn/link/cb57ba36db3faf9723fcfeade897b7fb )
set(BUILD_TESTING OFF CACHE INTERNAL "禁用gtest自带的示例") FetchContent_MakeAvailable(googletest)
2. 编写测试代码
假设你的项目有一个函数需要测试:
立即学习“C++免费学习笔记(深入)”;
// math_utils.h #pragma once int add(int a, int b);// math_utils.cpp
include "math_utils.h"
int add(int a, int b) { return a + b; }
编写对应的测试文件:
// tests/test_math.cpp #include#include "math_utils.h" TEST(MathTest, AddFunction) { EXPECT_EQ(add(2, 3), 5); EXPECT_EQ(add(-1, 1), 0); }
3. 配置CMake构建测试可执行文件
在项目根目录或tests/子目录下的CMakeLists.txt中添加测试目标:
enable_testing()add_executable(test_runner tests/test_math.cpp) target_link_libraries(test_runner gtest_main gtest pthread)
注册到CTest
add_test( NAME MathTest_AddFunction COMMAND test_runner )
enable_testing()启用测试支持,add_test()将可执行文件注册为一个测试项。
4. 运行测试
构建项目后,使用ctest命令运行测试:
mkdir build && cd build cmake .. make ctest
输出会显示测试是否通过。加上-V参数可查看详细日志:
ctest -V
也可以直接运行测试程序调试:
./test_runner
基本上就这些。只要把gtest集成好,写好测试用例,再让CMake生成并注册测试目标,就能实现自动化测试流程。不复杂但容易忽略细节,比如忘记enable_testing()或链接pthread库。确保每一步都配对,测试就能顺利跑起来。











