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

编写对应的测试文件:

Facet
Facet

Facet.ai是一款AI图像生成和编辑工具,具备实时图像生成和编辑功能

下载

// 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

php远程文件教程合集
php远程文件教程合集

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

21

2026.01.22

PHP后端开发相关内容汇总
PHP后端开发相关内容汇总

本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。

14

2026.01.22

php会话教程合集
php会话教程合集

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

8

2026.01.22

宝塔PHP8.4相关教程汇总
宝塔PHP8.4相关教程汇总

本专题整合了宝塔PHP8.4相关教程,阅读专题下面的文章了解更多详细内容。

7

2026.01.22

PHP特殊符号教程合集
PHP特殊符号教程合集

本专题整合了PHP特殊符号相关处理方法,阅读专题下面的文章了解更多详细内容。

5

2026.01.22

PHP探针相关教程合集
PHP探针相关教程合集

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

6

2026.01.22

菜鸟裹裹入口以及教程汇总
菜鸟裹裹入口以及教程汇总

本专题整合了菜鸟裹裹入口地址及教程分享,阅读专题下面的文章了解更多详细内容。

19

2026.01.22

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

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

9

2026.01.22

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
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号