0

0

C++怎么使用Google Test进行单元测试_C++单元测试框架与Google Test使用

尼克

尼克

发布时间:2025-11-18 17:37:38

|

360人浏览过

|

来源于php中文网

原创

Google Test是C++常用单元测试框架,支持多种安装方式如包管理器、源码编译及CMake FetchContent;通过TEST宏定义测试用例,EXPECT_EQ进行断言;可使用TEST_P和INSTANTIATE_TEST_SUITE_P实现参数化测试;结合CMake编译链接gtest_main生成可执行文件并运行测试,输出结果清晰,推荐将其集成到日常开发中以提升代码质量。

c++怎么使用google test进行单元测试_c++单元测试框架与google test使用

在C++开发中,单元测试是保证代码质量的重要手段。Google Test(也称gtest)是目前最流行的C++单元测试框架之一,它提供了丰富的断言、测试用例组织方式以及测试运行机制,帮助开发者快速构建可靠的测试。

安装与配置Google Test

Google Test本身是一个开源库,可以通过多种方式集成到项目中:

  • 使用包管理器:在Ubuntu上可以运行sudo apt-get install libgtest-dev安装源码,再配合CMake编译;macOS可用Homebrew:brew install googletest
  • 从GitHub获取源码:克隆官方仓库https://github.com/google/googletest,然后通过CMake构建静态库或直接将源码加入项目。
  • 使用CMake FetchContent(推荐):在项目CMakeLists.txt中自动下载并编译gtest,无需手动安装。

示例CMake配置片段:

include(FetchContent)
FetchContent_Declare(
  googletest
  URL https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip
)
FetchContent_MakeAvailable(googletest)

编写第一个测试用例

假设我们有一个简单的加法函数需要测试:

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

int add(int a, int b) {
  return a + b;
}

创建一个测试文件test_add.cpp

#include 

// 被测函数
int add(int a, int b);

TEST(MathTest, AdditionWorks) {
  EXPECT_EQ(add(2, 3), 5);
  EXPECT_EQ(add(-1, 1), 0);
  EXPECT_EQ(add(0, 0), 0);
}

说明:

Batch GPT
Batch GPT

使用AI批量处理数据、自动执行任务

下载
  • TEST宏定义一个测试用例,第一个参数是测试套件名(MathTest),第二个是测试名(AdditionWorks)。
  • EXPECT_EQ验证两个值是否相等,失败不会中断测试执行。
  • 若希望失败后停止,可使用ASSERT_EQ

组织多个测试与参数化测试

当测试逻辑相似但输入不同时,可以使用参数化测试避免重复代码。

class AddTest : public ::testing::TestWithParam> {};

TEST_P(AddTest, HandlesVariousInputs) {
  auto [input_a, input_b, expected] = GetParam();
  EXPECT_EQ(add(input_a, input_b), expected);
}

INSTANTIATE_TEST_SUITE_P(
    NormalCases, AddTest,
    ::testing::Values(
        std::make_tuple(2, 3, 5),
        std::make_tuple(-1, 1, 0),
        std::make_tuple(0, 0, 0)
    )
);

这样每个参数组合都会生成一个独立的测试实例,便于排查具体哪组数据出错。

编译与运行测试

使用CMake链接gtest库:

add_executable(test_all test_add.cpp)
target_link_libraries(test_all gtest_main)

编译后运行可执行文件:

./test_all

输出会显示哪些测试通过或失败,并统计结果。添加--gtest_filter=*可过滤运行特定测试。

基本上就这些。Google Test功能强大,支持死亡测试、类型参数化、自定义断言等高级特性,适合从小型工具到大型系统的测试需求。关键是把测试变成日常开发的一部分,持续提升代码健壮性。

相关专题

更多
macOS怎么切换用户账户
macOS怎么切换用户账户

在 macOS 系统中,可通过多种方式切换用户账户。如点击苹果图标选择 “系统偏好设置”,打开 “用户与群组” 进行切换;或启用快速用户切换功能,通过菜单栏或控制中心的账户名称切换;还能使用快捷键 “Control+Command+Q” 锁定屏幕后切换。

324

2025.05.09

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1677

2024.08.16

常见的linux系统有哪些
常见的linux系统有哪些

linux系统有Ubuntu、Fedora、CentOS、Debian、openSUSE、Arch Linux、Gentoo、Slackware、Linux Mint、Kali Linux。更多关于linux系统的文章详情请阅读本专题下面的文章。php中文网欢迎大家前来学习。

791

2023.10.27

ubunt上安装和配置vnc
ubunt上安装和配置vnc

安装方法:安装VNC服务器、启动VNC服务器、设置VNC密码等等。想了解更多ubuntu的相关内容,可以阅读本专题下面的文章。

407

2023.12.28

ubuntu启动黑屏解决方法
ubuntu启动黑屏解决方法

ubuntu启动黑屏解决方法:检查是否是电源问题、检查内存是否接触不良、检查显卡问题等。想了解更多ubuntu的相关内容,可以阅读本专题下面的文章。

653

2023.12.28

为什么ubuntu有网络连接但不能上网
为什么ubuntu有网络连接但不能上网

ubuntu有网络连接但不能上网的原因:1、dns配置问题;2、代理服务器设置问题;3、网络防火墙设置问题;4、路由器或调制解调器设置问题;5、网络驱动程序问题;6、网络配置文件问题;7、其他问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

447

2024.09.05

ubuntu安装golang
ubuntu安装golang

本专题整合了ubuntu安装golang所有方法汇总,阅读下面的文章了解更多详细操作。

91

2025.12.13

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

3

2025.12.31

php网站源码教程大全
php网站源码教程大全

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

1

2025.12.31

热门下载

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

精品课程

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

共21课时 | 2.3万人学习

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

共8课时 | 1.5万人学习

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

共0课时 | 0人学习

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

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