0

0

c++怎么在CMake中添加单元测试_c++构建系统与测试集成方法

穿越時空

穿越時空

发布时间:2025-11-09 18:17:32

|

736人浏览过

|

来源于php中文网

原创

首先通过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中添加单元测试_c++构建系统与测试集成方法

在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; }

编写对应的测试文件:

魔珐星云
魔珐星云

无需昂贵GPU,一键解锁超写实/二次元等多风格3D数字人,跨端适配千万级并发的具身智能平台。

下载

// 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库。确保每一步都配对,测试就能顺利跑起来。

相关专题

更多
PHP 命令行脚本与自动化任务开发
PHP 命令行脚本与自动化任务开发

本专题系统讲解 PHP 在命令行环境(CLI)下的开发与应用,内容涵盖 PHP CLI 基础、参数解析、文件与目录操作、日志输出、异常处理,以及与 Linux 定时任务(Cron)的结合使用。通过实战示例,帮助开发者掌握使用 PHP 构建 自动化脚本、批处理工具与后台任务程序 的能力。

32

2025.12.13

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

9

2026.01.22

html编辑相关教程合集
html编辑相关教程合集

本专题整合了html编辑相关教程合集,阅读专题下面的文章了解更多详细内容。

56

2026.01.21

三角洲入口地址合集
三角洲入口地址合集

本专题整合了三角洲入口地址合集,阅读专题下面的文章了解更多详细内容。

28

2026.01.21

AO3中文版入口地址大全
AO3中文版入口地址大全

本专题整合了AO3中文版入口地址大全,阅读专题下面的的文章了解更多详细内容。

378

2026.01.21

妖精漫画入口地址合集
妖精漫画入口地址合集

本专题整合了妖精漫画入口地址合集,阅读专题下面的文章了解更多详细内容。

115

2026.01.21

java版本选择建议
java版本选择建议

本专题整合了java版本相关合集,阅读专题下面的文章了解更多详细内容。

3

2026.01.21

Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

16

2026.01.21

C++多线程相关合集
C++多线程相关合集

本专题整合了C++多线程相关教程,阅读专题下面的的文章了解更多详细内容。

9

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
HTML教程
HTML教程

共500课时 | 4.9万人学习

php初学者入门课程
php初学者入门课程

共10课时 | 0.6万人学习

RunnerGo从入门到精通
RunnerGo从入门到精通

共22课时 | 1.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号