0

0

C++如何进行单元测试?GoogleTest框架在C++项目中的应用【测试教程】

尼克

尼克

发布时间:2025-12-13 12:55:03

|

672人浏览过

|

来源于php中文网

原创

GoogleTest写C++单元测试核心是三步:写TEST宏定义的测试用例、用EXPECT_EQ/ASSERT_EQ等断言验证、运行二进制并用命令行参数过滤或调试;推荐vcpkg或submodule集成,优先链接GTest::gtest_main而非手写main。

c++如何进行单元测试?googletest框架在c++项目中的应用【测试教程】

用 GoogleTest 写 C++ 单元测试,核心是三步:写测试用例、断言验证行为、运行并看结果。它不强制依赖构建系统,但和 CMake 配合最顺手。

安装与集成 GoogleTest

推荐用 git submodulevcpkg 管理依赖,避免手动编译带来的路径和 ABI 问题。

  • 用 vcpkg:执行 vcpkg install googletest:x64-windows(Windows)或 googletest:x64-linux(Linux),再在 CMake 中 find_package(GTest REQUIRED)
  • 用 submodule:把 GoogleTest 克隆进 third_party/googletest,CMake 中用 add_subdirectory(third_party/googletest),然后链接 GTest::gtest_main
  • 注意:不要直接 #include "gtest/gtest.h" 后自己实现 main(),除非你明确需要自定义初始化逻辑;多数情况直接链接 gtest_main 就自动有了入口函数

编写第一个测试用例

每个测试用例对应一个“测试套件 + 测试名”,用 TEST(TestSuiteName, TestName) 宏定义,里面写断言语句。

  • 基础断言用 ASSERT_EQ(失败立即返回)或 EXPECT_EQ(失败继续执行,适合检查多个条件)
  • 测试函数里不能有返回值,也不能传参数——所有输入数据应在测试体内构造
  • 示例:TEST(MathUtils, AddReturnsCorrectResult) { EXPECT_EQ(5, add(2, 3)); }

组织测试与复用逻辑

当多个测试需要共享初始化/清理逻辑,用测试套件类(TEST_F)比全局 setup/teardown 更安全可靠。

ONLYOFFICE
ONLYOFFICE

用ONLYOFFICE管理你的网络私人办公室

下载

立即学习C++免费学习笔记(深入)”;

  • 定义一个继承 testing::Test 的类,在 SetUp()TearDown() 中写公共资源的构造与析构
  • 成员变量自动对每个测试独立实例化,避免测试间状态污染
  • 使用时写 TEST_F(MyFixture, CanReadConfig) { EXPECT_TRUE(config_.is_valid()); }

运行与调试技巧

生成的测试可直接执行,支持命令行过滤、重复运行、输出 XML 等,开发时很实用。

  • 只跑某套件:./test_bin --gtest_filter=Network*
  • 重复跑 10 次找随机失败:./test_bin --gtest_repeat=10 --gtest_break_on_failure
  • 生成 JUnit 格式报告供 CI 解析:./test_bin --gtest_output=xml:test-report.xml
  • 在 IDE(如 CLion、VS2022)中可直接点击绿色箭头运行单个 TEST,支持断点调试

基本上就这些。GoogleTest 不复杂但容易忽略初始化方式和断言选择,写熟了就是自然反应。

相关专题

更多
软件测试常用工具
软件测试常用工具

软件测试常用工具有Selenium、JUnit、Appium、JMeter、LoadRunner、Postman、TestNG、LoadUI、SoapUI、Cucumber和Robot Framework等等。测试人员可以根据具体的测试需求和技术栈选择适合的工具,提高测试效率和准确性 。

436

2023.10.13

java测试工具有哪些
java测试工具有哪些

java测试工具有JUnit、TestNG、Mockito、Selenium、Apache JMeter和Cucumber。php还给大家带来了java有关的教程,欢迎大家前来学习阅读,希望对大家能有所帮助。

298

2023.10.23

Java 单元测试
Java 单元测试

本专题聚焦 Java 在软件测试与持续集成流程中的实战应用,系统讲解 JUnit 单元测试框架、Mock 数据、集成测试、代码覆盖率分析、Maven 测试配置、CI/CD 流水线搭建(Jenkins、GitHub Actions)等关键内容。通过实战案例(如企业级项目自动化测试、持续交付流程搭建),帮助学习者掌握 Java 项目质量保障与自动化交付的完整体系。

19

2025.10.24

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1889

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2087

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

1020

2024.11.28

自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

641

2023.07.05

git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

528

2023.07.06

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

19

2026.01.20

热门下载

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

精品课程

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

共48课时 | 7.5万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

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

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