c++单元测试框架之gtest

跨平台C++单元测试框架——GTest 1、简介 GTest是google公司发布的一个跨平台的(Liunx、Mac OS X、Windows、Cygwin、Windows CE and Symbian)C++单元测试框架。它提供了丰富的断言、致命和非致命判断、参数化、死亡测试等等。 使用gtest时,就是编写断言(assertions),断言语句会检测条件是否为真。一个断言可存在三种结果:success(成功),nonfatal failure(非致命失败),或 fatal failure(致命失败)。当出现致命... 阅读详情

搞了3个礼拜的单元测试了,把最近所学所用的东西记录一下,顺便为公司接下来要做的单元测试培训做下背书。

首先什么是单元测试。

在面向对象编程中,通常一个类会承担一个单一的职责,所以我们可以用类来划分单元。单元测试,就是针对项目中的各个类进行测试。它侧重于发现单元内部的逻辑错误,属于白盒测试的范畴。

单元测试强调以下几点:

语句覆盖:选择足够的测试数据,使得代码的每个语句都至少被执行一次。

判定覆盖:选择足够的测试数据,使得程序的每个判定条件都至少出现一次真值和一次假值。

条件覆盖:使得每一个判断语句的每个逻辑条件可能的值至少出现一次。

条件组合覆盖:即当一个判定条件由多个条件组合二成时,使得每个条件的各种可能的组合都出现一次。

数据覆盖:即用尽可能多的数据传入接口中进行测试。

单元测试入口。

在c++中,任何程序都需要main函数,gtest同理,下面是单元测试的入口main。

#include <gtest/gtest.h>

int main(int argc,char **argv)
{
    test::InitGoogleTest(&argc,argv);    //初始化gtest
    return RUN_ALL_TESTS();    //运行程序中所有的测试用例
}

测试用例编写。

首先我们得有一个接口:

int sum(int a,int b)
{
    sum = a + b;
    if(sum > 100)
        return 100;

    return sum;
}

测试用例:

TEST(calculate,test_sum)
{
    EXPECT_EQ(8,sum(5,3));
    EXPECT_EQ(100,sum(60,40));
    EXPECT_EQ(100,sum(150,50));
}

EXPECT_EQ(expected,actual),这个断言用来判断actual与expected是否相等。expected是预期值,actual是实际值。

当二者相等时,测试通过。

就是这么简单。

一文读懂测试单元gtest gtest 是 Google 开发的 C++ 单元测试框架,提供了丰富的断言、测试夹具和测试运行器等功能,帮助开发者编写高效、可维护的测试代码。好的测试单元应具备独立性、结构化组织、跨平台兼容性、丰富的失败信息、低维护成本和高执行效率等特点。gtest 通过自动注册机制、参数化测试和并行执行等特性,减少了测试代码的重复性,提升了测试效率。安装 gtest 可以通过克隆 GitHub 仓库并使用 CMake 进行编译和安装。gtest 的断言分为非致命断言(EXPECT_)和致命断言(ASSERT_),支持布 阅读详情

相关推荐

linux下使用gtest框架进行c/c++单元测试

前言google test(以下简称gtest)是谷歌的开源C++单元测试框架,用来做c/c++的单元测试比较方便。下面对于它在linux下的使用做简单的介绍,同时也作为自己的笔记。因为仅作示例,因此以下过程也比较简单。准备gtest框架在github网站下载gtest框架https://github.com/google/googletest解压后,进入googltetest目录。目录下有以下内容

守望的博客-编程珠玑 8257

Google Test(gtest)写c++单元测试

Google Test(gtest)是谷歌开源的用于c++单元测试的框架,其github主页:https://github.com/google/googletest 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。比如我们可以对程序中的一个文件、函数或一个类进行单元测试。下面以ubuntu为例进行简单的学习使用,此外windows和mac下也可以使用gtest。...

weixin_30711917的博客 402

c++单元测试之gtest测试框架快速上手

单元测试 模块级测试,与系统测试、集成测试等不同,它是对软件模块细分后的单元进行的细粒度测试,应该在开发过程中进行。 单元测试( Unit Test ,模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确,通过编写单元测试可以在编码阶段发现程序编码错误,甚至是程序设计错误。 单元测试有很多好处: 增加开发人员的信心 修改代码后进行快速的回归测试 提高开发质...

guotianqing的博客 1万+

使用gtest做单元测试

使用gtest做单元测试 文章目录使用gtest做单元测试1.用gtest写测试工程的大致流程配置gtest头文件及库gtest的相关概念TEST与TEST_F断言事件机制参考 gtest是一个跨平台的(Liunx、Mac OS X、Windows 、Cygwin 、Windows CE and Symbian ) C++单元测试框架,由google公司发布。gtest是为在不同平台上为编写C++测试而生成的。它提供了丰富的断言、致命和非致命判断、参数化、”死亡测试”等等 1.用gtest写测试工程的大致流

hu_hao的博客 4503

c++单元测试框架Gtest的简单配置与使用

之前从来没有写测试代码的习惯,在代码调试上确实花了很多时间。最近在看《Agile Java》,逐渐了解到单元测试在软件开发过程中的重要性,觉得应该从现在开始养成写单元测试的习惯。 Java有大名鼎鼎的JUnit,而C++想必也有成熟的单元测试框架。经过一番搜索,最后我选择了Google的C++开源单元测试框架Gtest。下面记录一下Gtest的配置和简单使用,希望能够帮助到有需要的朋友。

clayandwind的博客 3718

掌握gtest测试框架:C++单元测试实践指南

测试用例(Test Case)是软件测试过程中最小的测试单位,它具有明确的输入数据、执行步骤、预期结果和实际结果。一个良好的测试用例应该专注于验证软件的特定功能或行为,并能够独立运行,不受其他测试用例的影响。在gtest框架中定义测试用例通常遵循以下结构:其中是测试套件的名称,它用于将相关的测试用例进行分类,而则是具体的测试用例名称。这种命名方式不仅使测试代码结构清晰,而且便于管理和运行。

weixin_34620658的博客 1001

C++单元测试框架Google Test系列(gtest)

目录 1. 前言 2. 断言 示例 操作符<< 布尔值检查 数值型数据检查 字符串检查 显示返回成功或失败 异常检查 Predicate Assertions 浮点型检查 类型检查 3. 事件机制 全局事件 TestSuite事件 TestCase事件 4. 参数化 旧方案 使用参数化后的方案 参数化后的测试案例名 类型参数化 5. 死亡测试...

私房菜 4628

C++单元测试与模拟框架gtest和gmock实战指南

Google Test(gtest)是专为C++开发设计的开源单元测试框架,遵循MIT许可证,支持跨平台开发。其设计哲学强调简洁性、可扩展性与可读性,适用于从小型库到大型系统的全面测试。在C++单元测试实践中,测试用例的定义与执行是整个测试流程中最核心的环节。Google Test(gtest)提供了简洁而强大的测试用例定义机制,使得开发者可以快速构建结构清晰、可维护性强的测试代码。

weixin_42263617的博客 1222

【GTest】C++单元测试框架 Google Test 的简单使用

GTest是一个跨平台的(Liunx、MacOSX、Windows、Cygwin、WindowsCEandSymbian)C++单元测试框架,由google公司发布。

qq_43557907的博客 1362

还在手敲LaTeX公式?用Rime小狼毫打造你的专属数学输入法(附完整配置包)

本文介绍如何利用Rime小狼毫输入法引擎打造专属数学公式输入方案,显著提升LaTeX公式输入效率。通过详细配置教程和智能补全技巧,帮助科研人员和学生实现3-5倍的输入速度提升,特别适合学术写作和技术文档创作场景。

weixin_32520601的博客 282

ai数字人系统部署

这段代码实现了基本的语音交互闭环,用户通过语音输入问题,数字人识别语音后进行自然语言理解并生成回复,再将回复转换为语音输出。但实际应用中的 AI 数字人系统更为复杂,如形象渲染需专业图形引擎(如 Unity、Unreal Engine),自然语言处理也会涉及更复杂的模型微调及多轮对话管理等。一个完整的 AI 数字人系统涵盖形象生成、自然语言处理、动作控制等多个复杂功能,下面为你提供一个 Python 示例,整合多个库来实现数字人基础功能,包括语音交互、简单的自然语言理解以及通过虚拟形象展示对话。

weixin_ggwwsscc的博客 369

C++单元测试框架Gtest的配置与使用过程

  转载地址:https://blog.youkuaiyun.com/clayanddev/article/details/53771248 “你的时间非常值钱,我是单元测试,我在编程世界等你。 ” 此前我很少写单元测试,总认为那是在浪费时间。但后来发现,节省的那点写测试代码的时间远远抵不上花在后期调试上的时间。最近在看《Angile Java》,这才逐渐了解到单元测试在软件开发过程中的重要性,因此决定...

无与伦比BLOG 1098

射频工程师笔记---射频通信基础

回顾一下移动通信技术的发展,其实是互联网和通信技术的融合过程。在这个过程中,很多应用都在不断加入其中。比如计算机跟通信的融合产生了互联网、互联网跟手机的融合带来了移动互联网。手机可以看杂志、看视频、听音乐,于是又出现了内容服务产业;再后来,电视音箱等设备也能联网,于是网络跟家电又产生了融合。所以应用的出现总是在融合其他产业。在1995年,比尔·盖茨在《未来之路》一书中首次提出:在未来...

多年硬件从业经历,热爱学习,记录生活! 2万+

Google开源C++单元测试框架gTest 7:深入探索gTest

一、前言 “深入解析”对我来说的确有些难度,所以我尽量将我学习到和观察到的gtest内部实现介绍给大家。本文算是抛砖引玉吧,只能是对gtest的整体结构的一些介绍,想要了解更多细节最好的办法还是看gtest源码,如果你看过gtest源码,你会发现里面的注释非常的详细!好了,下面就开始了解gtest吧。 二、从TEST宏开始 前面的文章已经介绍过TEST宏的用法了,通过TEST

xi_gua_gua的博客 662

【气候极端指数】MATLAB计算各种气候极端指数

简介各类气候极端指数,及其MATLAB计算代码

WW、forever的博客 4917

手把手教你学Simulink——基于Simulink的无位置传感器PMSM滑模观测器(SMO)控制

本文基于Simulink平台实现无位置传感器PMSM滑模观测器(SMO)控制,解决了传统机械位置传感器存在的成本高、体积大、抗干扰差等问题。SMO通过滑模切换函数估算反电动势,进而获得转子位置和速度,具有强鲁棒性(参数变化20%误差仅0.4°)和良好低速性能(50rpm转矩衰减<5%)。文章详细介绍了PMSM数学模型、SMO算法设计、Simulink建模步骤及参数优化方法,提供了可直接工程应用的MATLAB代码和仿真模型,为电动汽车驱动、工业机器人等高精度控制场景提供了有效解决方案。

MHD0815的博客 228

Google C++单元测试框架(Gtest)系列教程之一——入门

引言 本文将先介绍单元测试的相关概念,然后引入Google的开源C++单元测试框架Gtest,最后通过编译、运行Gtest自带的一个测试样例,介绍如何在Unix/Linux下使用Gtest。 单元测试 说到单元测试,大家应该不会陌生。作为软件开发过程中最低级别的测试

1521

修复Oracle MySQL Server 安全漏洞(CVE-2023-0464)

修复Oracle MySQL Server 安全漏洞(CVE-2023-0464)

路~可以走过 3683

Google开源C++单元测试框架gTest 1:gTest安装编译

一、前言 本篇将介绍一些gtest的基本使用,包括下载,安装,编译,建立我们第一个测试Demo工程,以及编写一个最简单的测试案例。  二、下载 如果不记得网址, 直接在google里搜gtest,第一个就是。目前gtest的最新版本为1.3.0,从下列地址可以下载到该最新版本: http://googletest.googlecode.com/files/gtest

xi_gua_gua的博客 1752

【云原生技术】SonarQube 生态中PMD插件和P3C插件详细介绍

4. 在项目中如何选择 / 组合 1. 小团队、对《阿里规约》认同度高 → 直接启用 **P3C**,配合 SonarJava 基本够用。 2. 追求全面 Bug/安全检测 + 额外编码规范 → **SonarJava + PMD**(必要时加 P3C 少量规则)。 3. 大型多团队,希望“一本规约”统一风格 → **P3C 为主**,再补充 SonarJava/PMD 的 Bug 与安全规则。 4. 通过 Quality Gate 控制:将 **Blocker/Critical** Bug

weixin_46453070的博客 1364

华为OD机试 新系统真题 【数字系统转换器】

华为OD机试 新系统真题【数字系统转换器】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【数字系统转换器】多语言题解。

qq_45776114的博客 539

实现谷歌单元测试框架gtest(C++测试框架)(上)

文章目录1.单元测试2.单元测试框架3.gtest4.安装gtest 1.单元测试 负责对最小的软件设计单元(模块)进行验证,单元就是人为规定的最小的被测功能模块,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。 2.单元测试框架 提供用例组织与执行:提供用例组织与执行:测试用例只有几条时,可以不考虑用例组织,但是用例达到成百上千时,大量的测试用例堆砌在一起,就产生了扩展性与维护性等问题。 提供丰富的断言方法:不论是功能测试,还是单元测试,在用例执行完之后都需要将

进阶的花生 1053

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Google开源C++单元测试框架gTest 2:gTest断言

一、前言 这篇文章主要总结gtest中的所有断言相关的宏。 gtest中,断言的宏可以理解为分为两类,一类是ASSERT系列,一类是EXPECT系列。一个直观的解释就是: 1. ASSERT_* 系列的断言,当检查点失败时,退出当前函数(注意:并非退出当前案例)。  2. EXPECT_* 系列的断言,当检查点失败时,继续往下执行。 二、示例 // i

xi_gua_gua的博客 633

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

C++单元测试框架:gtest

为什么80%的码农都做不了架构师?>>> ...

weixin_33928467的博客 336

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

玩转Google开源C++单元测试框架Google Test系列(gtest)(总)

前段时间学习和了解了下Google的开源C++单元测试框架Google Test,简称gtest,非常的不错。 我们原来使用的是自己实现的一套单元测试框架,在使用过程中,发现越来越多使用不便之处,而这样不便之处,gtest恰恰很好的解决了。 其实gtest本身的实现并不复杂,我们完全可以模仿gtest,不断的完善我们的测试框架, 但最后我们还是决定使用gtest取代掉原来的自己的测试框架,原因是...

u013366022的专栏 343
上一篇: 工作环境的重要性
下一篇: gtest之断言集合
Qt上位机开发
Qt上位机开发 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄9年 9664粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值