0

0

c++如何使用Google Test进行单元测试_c++单元测试框架Google Test入门与示例

下次还敢

下次还敢

发布时间:2025-11-21 17:33:20

|

807人浏览过

|

来源于php中文网

原创

Google Test是C++常用单元测试框架,支持丰富断言和CMake集成。1. 可通过包管理器、源码构建或子项目方式安装;2. 使用TEST()定义测试用例,EXPECT_/ASSERT_进行断言;3. 配合CMake构建时需链接GTest库并启用测试;4. 常用断言包括数值比较、布尔判断、浮点近似和异常检测,有助于提升代码质量。

c++如何使用google test进行单元测试_c++单元测试框架google test入门与示例

在C++开发中,保证代码质量的重要手段之一是编写单元测试。Google Test(也称gtest)是目前最流行的C++单元测试框架之一,它提供了丰富的断言、测试用例组织方式以及测试运行机制,非常适合用于中小型项目的测试工作。

安装与配置 Google Test

Google Test 不是系统库,需要手动集成到项目中。有几种常见方式:

  • 使用包管理器(推荐):在 Ubuntu 上可以通过 apt 安装:
    sudo apt-get install libgtest-dev cmake
    注意:这个命令只安装源码,还需要编译生成库文件。
  • 从源码构建:克隆官方仓库并用 CMake 编译:
    git clone https://github.com/google/googletest.git
    cd googletest && mkdir build && cd build
    cmake .. && make && sudo make install
  • 作为子项目嵌入(适合现代CMake项目):使用 add_subdirectory() 将 gtest 源码包含进你的 CMakeLists.txt。

编写第一个测试用例

假设我们有一个简单的加法函数,想对它进行测试。

先写被测函数(math.h):

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

bool isPositive(int x);
int add(int a, int b);

实现(math.cpp):

#include "math.h"
int add(int a, int b) { return a + b; }
bool isPositive(int x) { return x > 0; }

测试文件(test_math.cpp):

#include
#include "math.h"

// 测试 add 函数
TEST(MathTest, AddFunction) {
  EXPECT_EQ(add(2, 3), 5);
  EXPECT_EQ(add(-1, 1), 0);
}

// 测试 isPositive 函数
TEST(MathTest, IsPositive) {
  EXPECT_TRUE(isPositive(5));
  EXPECT_FALSE(isPositive(-3));
  EXPECT_FALSE(isPositive(0));
}

说明
- TEST(TestCaseName, TestName) 定义一个测试用例,前缀名用于分组。
- 使用 EXPECT_*ASSERT_* 进行断言。
- EXPECT_* 失败不会中断当前测试函数。
- ASSERT_* 失败会立即终止测试函数。

使用 CMake 构建测试工程

创建 CMakeLists.txt 文件:

Cardify卡片工坊
Cardify卡片工坊

使用Markdown一键生成精美的小红书知识卡片

下载
cmake_minimum_required(VERSION 3.14)
project(MyTestProject)

设置 C++ 标准

set(CMAKE_CXX_STANDARD 17)

查找 Google Test

find_package(GTest REQUIRED)

添加被测源文件

add_library(math_lib math.cpp)

添加测试可执行文件

add_executable(test_math test_math.cpp)
target_link_libraries(test_math GTest::gtest GTest::gtest_main math_lib)

启用测试

enable_testing()
add_test(NAME RunTests COMMAND test_math)

构建步骤:

mkdir build
cd build
cmake ..
make
./test_math

运行结果会显示哪些测试通过或失败,并统计总数。

常用断言介绍

Google Test 提供了丰富的断言宏,以下是一些常用示例:

  • 数值比较
    EXPECT_EQ(a, b);   // 相等
    EXPECT_NE(a, b);   // 不相等
    EXPECT_LT(a, b);   // 小于
    EXPECT_LE(a, b);   // 小于等于
  • 布尔判断
    EXPECT_TRUE(condition);
    EXPECT_FALSE(condition);
  • 浮点数比较
    EXPECT_FLOAT_EQ(a, b);   // 单精度近似相等
    EXPECT_NEAR(a, b, abs_error);   // 在误差范围内
  • 异常测试(需启用 RTTI 和异常)
    EXPECT_THROW(stmt, ExceptionType);
    EXPECT_NO_THROW(stmt);

基本上就这些。Google Test 上手快,集成方便,配合 CMake 能很好地融入现代C++项目流程。只要坚持写测试,长期来看能显著提升代码健壮性。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

315

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

534

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

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

51

2025.08.29

C++中int的含义
C++中int的含义

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

194

2025.08.29

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

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

637

2023.07.05

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

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

526

2023.07.06

git撤销提交的commit
git撤销提交的commit

Git是一个强大的版本控制系统,它提供了很多功能帮助开发人员有效地管理和控制代码的变更,本专题为大家提供git 撤销提交的commit相关的各种文章内容,供大家免费下载体验。

264

2023.07.24

git提交错误怎么撤回
git提交错误怎么撤回

git提交错误撤回的方法:git reset head^:撤回最后一次提交,恢复到提交前状态。git revert head:创建新提交,内容与之前提交相反。git reset :使用提交的 sha-1 哈希撤回指定提交。交互式舞台区:标记要撤回的特定更改,然后提交,排除已撤回更改。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

543

2024.04.09

Java 项目构建与依赖管理(Maven / Gradle)
Java 项目构建与依赖管理(Maven / Gradle)

本专题系统讲解 Java 项目构建与依赖管理的完整体系,重点覆盖 Maven 与 Gradle 的核心概念、项目生命周期、依赖冲突解决、多模块项目管理、构建加速与版本发布规范。通过真实项目结构示例,帮助学习者掌握 从零搭建、维护到发布 Java 工程的标准化流程,提升在实际团队开发中的工程能力与协作效率。

10

2026.01.12

热门下载

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

精品课程

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

共21课时 | 2.6万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.5万人学习

Git中文开发手册
Git中文开发手册

共0课时 | 0人学习

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

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