新闻中心
c++怎么在CMake中添加单元测试_c++构建系统与测试集成方法
首先通过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) <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)
2. 编写测试代码
假设你的项目有一个函数需要测试:
// 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);
}
3. 配置CMake构建测试可执行文件
在项目根目录或tests/子目录下的CMakeLists.txt中添加测试目标:
易标AI
告别低效手工,迎接AI标书新时代!3分钟智能生成,行业唯一具备查重功能,自动避雷废标项
135
查看详情
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()将可执行文件注册为一个测试项。
4. 运行测试
构建项目后,使用ctest命令运行测试:
mkdir build && cd build cmake .. make ctest
输出会显示测试是否通过。加上-V参数可查看详细日志:
ctest -V
也可以直接运行测试程序调试:
./test_runner
基本上就这些。只要把gtest集成好,写好测试用例,再让CMake生成并注册测试目标,就能实现自动化测试流程。不复杂但容易忽略细节,比如忘记enable_testing()或链接pthread库。确保每一步都配对,测试就能顺利跑起来。
以上就是c++++怎么在CMake中添加单元测试_c++构建系统与测试集成方法的详细内容,更多请关注其它相关文章!
# cmake
# git
# go
# github
# ai
# 单元测试
# 武汉关键词排名推荐乐云seo
# 许昌定制网站建设价格
# seo权重提升的方法
# 搜外网seo工具大全
# 增城网站优化推广方案
# 赣州食品厂网络营销推广
# 常宁百度网站优化代运营
# 电商网站 建设
# 儿童公园网站优化建议
# 淘宝商品关键词排名查询
# 解决问题
# 可以直接
# 中文网
# 相关文章
# 要把
# 内存管理
# 客户端
# 可执行文件
# 就能
# google
# c++
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
Python getattr() 异常处理深度解析:避免程序意外退出
poki免费入口快捷访问 poki人气小游戏直接玩站点
将JSON对象数组转置为键值对列表的实用指南
蛙漫漫画官网在线入口 蛙漫全本漫画免费阅读平台
从OpenAI API响应中高效提取生成文本
QQ邮箱网页版登录入口 QQ邮箱官方在线使用平台
html两个JS只运行一个怎么办_让双JS在html中都运行方法【技巧】
windows10怎么查看本机ip_windows10命令提示符ipconfig使用
消息称三星明年 2 月正式发布 HBM4,与 SK 海力士同台竞技
163邮箱官方主页登录 直达网易邮箱登录核心页面
在J*aScript中复现SciPy的B样条拟合与求值:关键考量
sublime如何处理大型CSV文件的列对齐_sublime高级表格编辑插件指南
初次安装JDK时环境变量如何正确配置_J*A_HOME与PATH设置规则讲解
html怎么在cmd下运行php文件_cmd运行html中php文件方法【教程】
TikTok国际版官网直达_TikTok国际版官网直达进入在线观看
Go RPC HTTP服务正确实现与常见陷阱解析
Python:递归比较文件夹内容并找出特定类型文件的差异
如何解决电商平台定制报价请求的“黑洞”问题,SprykerQuoteRequest模块助你提升客户体验与销售效率
sublime怎么预览Markdown渲染效果_Markdown Preview插件 for sublime教程
C++如何操作注册表_Windows平台下C++读写注册表的API函数详解
AI泡沫首次被“刺破”:GPU十年都无法存活!
如何更改在 Excel 中打开超链接时的默认浏览器
蛙漫移动版在线看 蛙漫手机浏览器直达入口
win11如何加载ICC颜色配置文件 Win11校色文件安装与显示器色彩管理【指南】
格力空气能E5故障代码是什么情况_格力空气能E5代码解析与应对措施
Windows7怎么硬盘安装 Windows7提取ISO镜像到非系统盘并运行setup.exe实现硬盘直装【教程】
高德地图公交到站提醒失败如何解决 高德提醒权限设置
AO3访问入口汇总 AO3网页版同人作品一键直达
mcjs网页版流畅运行 mcjs低配电脑畅玩入口
如何仅使用CSS更改登录界面背景图像图标的颜色
漫蛙Manwa2官网入口地址分享 漫蛙漫画PC版永久访问通道
打开就能玩的植物大战僵尸 植物大战僵尸网页版传送门
快速CSGO开箱网站指南 CSGO开箱平台推荐
新三国志曹操传110级星符试炼夏侯渊极难攻略
海棠账号登录入口_登录海棠账户同步阅读记录
妖精漫画网页版登录入口免费_妖精漫画官网主页直接阅读漫画
荒野行动PC版怎么注册_荒野行动PC版账号注册详细流程图文教程
Golang如何实现简单的Web表单_Golang表单提交与验证处理方法
Windows10怎么开启存储感知 Windows10系统设置自动清理临时文件释放C盘空间【教程】
QQ邮箱登录官网首页 腾讯QQ邮箱网页入口
抖音商城签到领现金是真的吗_抖音商城签到奖励与提现说明
搜狗浏览器如何使用密码生成器创建强密码 搜狗浏览器内置密码安全工具
Node.js中HTML按钮与J*aScript函数交互的正确姿势
Golang如何使用const iota_Go iota常量计数器讲解
解决macOS上安装pyhdf时‘hdf.h’文件缺失的编译错误
excel如何生成目录 excel一键生成工作表目录超链接
一加Ace 6T支持全新明眸护眼:通过了最严苛的护眼小金标认证
理解Python模块与全局变量的作用域管理
Yandex官方入口网址 Yandex俄罗斯搜索引擎最新在线地址
Python自定义类排序:解决lambda键值访问TypeError的实践指南


2025-11-09
浏览次数:次
返回列表
897b7fb">https://www.php.cn/link/cb57ba36db3faf9723fcfeade897b7fb</a>
)</p><p>set(BUILD_TESTING OFF CACHE INTERNAL "禁用gtest自带的示例")
FetchContent_MakeAvailable(googletest)