使用GTest进行单元测试的简明指南

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

我们在开发中常会遇到这样的情况:一个函数写完了,运行程序看起来没问题,就算“搞定”了。

但是…

如果你给它传入一个非法参数?别人修改了它的依赖逻辑?

如果你不管它们,那么这些被遗忘在角落“潜在问题”以后可能就会出 bug。

于是,单元测试就成为写稳健代码的利器。

但是,许多开发者因时间压力或认为集成测试足够而抗拒单元测试。

因此,本文想做的,就是用一个小例子告诉你:

原来写单元测试并不难,哪怕你从没接触过GTest,跟着做一遍你就知道它的价值。

GTest简介

Google Test (GTest) 是 Google 出品的 C++ 单元测试框架,具备以下特点:

  • 易用的断言机制:比如 EXPECT_EQ, ASSERT_TRUE
  • 自动发现测试用例和报告结果
  • 支持测试夹具、参数化测试等高级功能
  • 与生产代码分离,编译独立

它是目前 C++ 社区最主流的单元测试框架之一。

单元测试示例

接下来,我们从零开始构建一个简单的单元测试示例。(代码不用复制,文末有工程链接)

项目结构

project/
├── build
├── CMakeLists.txt
├── include
│   └── my_math.h
├── src
│   ├── CMakeLists.txt
│   └── my_math.cc
├── third_party
│   └── googletest
└── unit_test
    ├── CMakeLists.txt
    └── my_math_test.cc

为了更加直观的表现对GTest的使用,这里手动下载GTest源码,然后将解压出来的googletest拷贝到third_party中使用。

也可以使用FetchContent等方式,有兴趣的可以深入研究下。

核心代码

include/my_math.h

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

代码转载自:https://pan.quark.cn/s/11d565366452 【USB转I2C/IIC适配器上位机应用程序】是一种针对I2C(Inter-Integrated Circuit)通信协议而构建的工具,其通过USB端口将个人计算机转变为能够与I2C设备进行交互的控制器。该适配器使开发人员与工程师能够便捷地对遵循I2C协议的芯片执行读取和写入任务,因此在硬件构建和测试阶段能够显著提升效率,对于核实I2C接口芯片的工作性能具有特别的价值。 I2C协议是由飞利浦(现NXP半导体)于1980年代初创立的一种双线式串行总线,其目的是用于连接微控制器及其他外围设备。该协议仅需两条信号线(SDA - 数据线,SCL - 时钟线)即可完成多设备间的通信,大幅度削减了电路板上的布线需求,从而降低了生产成本。I2C协议提供多种速度等级,涵盖标准模式(100kbps)、快速模式(400kbps)以及高速模式(3.4Mbps),旨在满足不同场景下的应用要求。 Ginkgo USB转I2C适配器是这项技术的具体应用实例,它提供了一个物理接口,用于将USB端口转换为I2C端口。适配器内部装配有一个微控制器单元,该单元负责处理从USB到I2C的信号转换,并且通过USB线路向计算机传输信息,同时接收来自计算机的指令以操控I2C总线。这种设计使用户无需具备深厚的硬件知识,仅需借助上位机软件即可实现对I2C设备的操控。 Ginkgo I2C Adapter Classic是与该适配器相配套的软件,通常包含以下几项核心功能: 1. 设备识别:自动检测并建立与USB转I2C适配器的连接。 2. 总线探查:扫描I2C总线上所连接的设备地址,有助于准确定位设备的位置。 3. 读写指令...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux在秋名山

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值