首先通过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系统管理测试用例。下面介绍如何配置。
Google Test是C++中最常用的单元测试框架。推荐通过CMake的FetchContent自动下载并编译,避免手动安装依赖。
在CMakeLists.txt中添加:
include(FetchContent) <p>FetchContent_Declare( googletest URL <a href="https://www.php.cn/link/cb57ba36db3faf9723fcfeade897b7fb">https://www.php.cn/link/cb57ba36db3faf9723fcfeade897b7fb</a> )</p><p>set(BUILD_TESTING OFF CACHE INTERNAL "禁用gtest自带的示例") FetchContent_MakeAvailable(googletest)
假设你的项目有一个函数需要测试:
立即学习“C++免费学习笔记(深入)”;
// math_utils.h
#pragma once
int add(int a, int b);
<p>// math_utils.cpp</p><h1>include "math_utils.h"</h1><p>int add(int a, int b) { return a + b; }
编写对应的测试文件:
// tests/test_math.cpp
#include <gtest/gtest.h>
#include "math_utils.h"
<p>TEST(MathTest, AddFunction) {
EXPECT_EQ(add(2, 3), 5);
EXPECT_EQ(add(-1, 1), 0);
}
在项目根目录或tests/子目录下的CMakeLists.txt中添加测试目标:
enable_testing() <p>add_executable(test_runner tests/test_math.cpp) target_link_libraries(test_runner gtest_main gtest pthread)</p><h1>注册到CTest</h1><p>add_test( NAME MathTest_AddFunction COMMAND test_runner )
enable_testing()启用测试支持,add_test()将可执行文件注册为一个测试项。
构建项目后,使用ctest命令运行测试:
mkdir build && cd build cmake .. make ctest
输出会显示测试是否通过。加上-V参数可查看详细日志:
ctest -V
也可以直接运行测试程序调试:
./test_runner
基本上就这些。只要把gtest集成好,写好测试用例,再让CMake生成并注册测试目标,就能实现自动化测试流程。不复杂但容易忽略细节,比如忘记enable_testing()或链接pthread库。确保每一步都配对,测试就能顺利跑起来。
以上就是c++++怎么在CMake中添加单元测试_c++构建系统与测试集成方法的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号