动手操作Gtest

单元测试gtest的安装与使用方法【结合官网的sample】 gtest单元测试是Google的一套用于编写C++测试的框架,可以运行在很多平台上(包括Linux、Mac OS X、Windows、Cygwin等等)。基于xUnit架构。支持很多好用的特性,包括自动识别测试、丰富的断言、断言自定义、死亡测试、非终止的失败、生成XML报告等等,本文对gtest的安装以及基本使用方法进行细致说明,希望对您有所帮助。 阅读详情

gtest

gtest其实也就是一个外部的链接库

也是生成一个test的可执行文件

代码如下

test_d435.h

#ifndef _TEST_TEST_D435_H_
#define _TEST_TEST_D435_H_

#include <gtest/gtest.h>

#include <opencv2/opencv.hpp>
#include <vector>

#include "../realsense/common_op.h"
#include "../realsense/d435_driver.h"

TEST(mytest, test_max_thresholding) {
  cv::Mat depth_mean(2, 4, CV_16UC1);
  for (int i = 0; i < depth_mean.rows; i++) {
    for (int j = 0; j < depth_mean.cols; j++) {
      depth_mean.at<ushort>(i, j) = i + j;
    }
  }

  cv::Mat raw_data_1 = cv::Mat::ones(2, 4, CV_16UC1);
  std::vector<cv::Mat> raw_data;
  raw_data.push_back(raw_data_1);
  std::vector<double> test;
  test = calculate_max_threshold(depth_mean, raw_data);

  EXPECT_EQ(2, test[0]);
  EXPECT_EQ(3, test[1]);
}

#endif

main.cc

#include <gtest/gtest.h>

#include "test_d435.h"

int main(int argc, char **argv) {
  testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.1.0)
project("mygtest")


FIND_PACKAGE(OpenCV REQUIRED)

set(CMAKE_CXX_COMPILER "g++")
set(CMAKE_CXX_FLAGS "-std=c++11")

add_library(my_lib
  ../realsense/common_op.cc
)

include_directories(${TARGET_NAME} usr/include/gtest)
include_directories(${OpenCV_DIRS})

add_executable(${PROJECT_NAME} main.cc)
target_link_libraries(${PROJECT_NAME}  /usr/local/lib/libgtest_main.a /usr/local/lib/libgtest.a -lpthread -lm ${OpenCV_LIBS} my_lib)

执行结果

[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from mytest
[ RUN      ] mytest.test_max_thresholding
[       OK ] mytest.test_max_thresholding (0 ms)
[----------] 1 test from mytest (0 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (0 ms total)
[  PASSED  ] 1 test.
VSCode 结合 GTest 实现 C++ 跨平台单元测试实战指南 本文提供了一份详细的实战指南,介绍如何在VSCode中集成Google Test(GTest)框架进行C++跨平台单元测试。内容涵盖从基础环境搭建、编写测试用例,到使用CMake管理项目以及为ARM平台交叉编译的完整流程,旨在帮助开发者构建高效的自动化测试工作流,提升代码质量和跨平台开发效率。 阅读详情

相关推荐

C++单元测试实战:从gtest基础到TEST/TEST_F高级应用

单元测试是软件工程中保障代码质量的核心实践,通过隔离验证最小代码单元的逻辑正确性,为重构和持续集成提供安全网。其原理在于模拟各种输入与边界条件,利用断言自动验证预期输出,从而快速定位缺陷。在C++生态中,Google Test(gtest)作为主流框架,通过TEST宏支持独立测试场景,而TEST_F宏结合测试夹具(Fixture)则能优雅管理共享资源与状态隔离。本文聚焦gtest实战,深入解析TEST与TEST_F的设计哲学、断言策略及生命周期管理,并结合测试替身(Mocking)与参数化测试等高级技巧,展

cuibinmo3519的博客 356

gtest编译和使用

gtest编译和使用

yang___xin的博客 1556

C++单元测试覆盖率统计实战:基于gtest/gcov/lcov的完整配置与避坑指南

单元测试是保障软件质量的关键实践,而代码覆盖率则是衡量测试完备性的核心指标。其原理是通过编译器插桩,在代码执行路径中插入探针,从而统计测试用例对源码的覆盖情况。这项技术对于提升代码可靠性、发现潜在缺陷具有重要价值,广泛应用于持续集成、代码评审和重构等工程场景。本文聚焦于C++生态,深入解析如何结合gtest测试框架与gcov/lcov工具链,解决编译选项配置、报告生成与合并等常见难题,并分享多模块项目处理与CI/CD集成的实战经验,帮助开发者构建高效的覆盖率统计体系。

weixin_34005042的博客 412

【Gtest使用说明】

【代码】【Gtest使用说明】

江边小客的博客 506

C++消息队列实现:muduo、Protobuf、SQLite3与gtest核心库实战

消息队列作为分布式系统中的核心中间件,其核心原理在于解耦生产者和消费者,实现异步通信与流量削峰。从技术实现层面看,一个健壮的队列需要构建在四大基石之上:高并发的网络通信、高效的消息协议、可靠的数据持久化以及严格的质量保障。网络通信通常采用基于Reactor模式的事件驱动架构,以应对海量连接;消息协议则需选用二进制序列化方案,以实现跨语言、高性能的数据交换;数据持久化依赖支持ACID事务的嵌入式存储,确保消息不丢失;而单元测试则是保障复杂异步逻辑正确性的生命线。本文聚焦于C++技术栈,深入探讨如何将muduo

weixin_29913663的博客 212

C++单元测试实战:从零掌握Google Test框架与工程实践

单元测试是软件工程中保障代码质量的核心实践,通过为代码模块编写自动化测试用例,验证其功能是否符合预期。其原理在于将程序分解为独立单元,针对每个单元设计输入输出验证,从而在代码变更时快速发现回归错误。这一技术对于提升代码可靠性、支持持续重构和团队协作具有重要价值,尤其适用于C++这类系统级编程语言的项目开发。在实际应用中,开发者常借助成熟的测试框架来组织和管理测试,例如Google Test(gtest)框架,它提供了丰富的断言机制、测试夹具和参数化测试等功能,能够高效应对各种测试场景。结合CMake构建工具

weixin_33798152的博客 469

C++ 单元测试之 gtest & gmock

说得更直白一些,就是自己实现一个假的依赖类,对这个类的方法你想要什么行为就可以有什么行为,你想让这个方法返回什么结果就可以返回怎么样的结果。至于单元的大小或范围,并没有一个明确的标准,单元可以是一个函数、方法、类、功能模块或者子系统。这是一个致命错误,如果断言失败,测试将立即终止。丰富的断言:Google Test提供了多种断言,包括基本的比较断言(如EXPECT_EQ、ASSERT_TRUE等)和容器断言(如EXPECT_CONTAINER_EQ、ASSERT_THAT等),可以满足各种测试需求。

2201_75961424的博客 1499

Windows平台C++单元测试框架googletest配置与集成实战指南

单元测试是软件工程中保障代码质量的核心实践,通过隔离测试最小代码单元来验证其逻辑正确性。其原理在于构建自动化测试套件,在代码变更后快速执行验证,从而及早发现回归问题。这一实践的技术价值在于提升代码可维护性、支持安全重构,并为持续集成提供基础。在C++开发领域,尤其是在Windows平台下使用Visual Studio和Qt等工具链时,选择稳定可靠的测试框架至关重要。googletest作为Google开源的C++测试框架,以其丰富的断言库、测试夹具和参数化测试等特性,成为该场景下的主流选择。本文聚焦于goo

weixin_34090562的博客 286

[C++][第三方库][gtest]详细讲解

[C++][第三方库][gtest]详细讲解

SnowK博客 3634

Windows下CMake集成googletest:现代C++单元测试框架配置指南

单元测试是软件工程中确保代码质量的核心实践,通过隔离测试最小代码单元来验证其行为是否符合预期。其原理在于自动化验证,能快速发现回归错误,提升代码可维护性。在C++生态中,Google Test(googletest)是广泛采用的事实标准框架,它提供了丰富的断言宏和测试组织功能。对于构建系统,CMake已成为跨平台C++项目管理的首选工具,其FetchContent模块能以声明式方式直接集成外部依赖源码,无需预安装。本教程聚焦于在Windows开发环境中,使用CMake的FetchContent方案,将goo

weixin_33851177的博客 388

Google GTest C++单元测试框架实战指南

写到这里,我想说的是:优秀的测试不是为了证明代码没错,而是为了让你敢于重构、敢于创新。当你拥有一个可靠的测试套件时,你就不再害怕修改旧代码。你可以大胆尝试新架构、优化性能、清理技术债——因为只要测试还绿着,你就知道一切安好。GTest只是一个工具,但它背后代表的是一种工程态度:质量前置、反馈快速、持续交付。希望这篇长达七千多字的实战指南,能帮你迈出高质量C++开发的第一步。现在,去给你的代码加上第一个TEST吧!🔥“我从来不相信‘我没时间写测试’这种话。

weixin_31139479的博客 766

gtest使用手册中文版

gtest使用手册中文版 【下载地址】gtest使用手册中文版 gtest使用手册中文版为开发者提供了详尽的gtest单元测试框架使用指南。gtest是C++开发中广泛应用的单元测试框架,本手册从简介、环境搭建到基础用法和进阶技巧,全面覆盖其核心功能。通过实践案例,帮助开发者快速掌握gtest,提升代码质量。手册内容简洁...

gitblog_06746的博客 391

【2026-Spark实验一-Windows中安装Spark环境】

本文详细介绍了在Windows系统中配置Spark 3.5.8开发环境的完整流程。主要内容包括:安装JDK 8并配置环境变量,下载并解压Spark 3.5.8预编译版,设置SPARK_HOME系统变量,配置Hadoop的winutils工具解决Windows兼容性问题。通过spark-shell和SparkPi示例程序验证环境配置成功,确保Spark能够正常运行分布式计算任务。文中特别强调了路径命名规范、环境变量设置顺序等关键细节,提供了完整的配置截图和验证方法,帮助开发者快速搭建稳定的Spark学习环境。

pblh123的专栏 1587

【GTest】当Gtest用例失败后,做你想做的任何事

//备注:此文章是joven的分享,正巧对手头的工作有帮助,而且借此可以延伸出一个新的需求:若有个用例在不知不觉的情况下,卡死或者阻塞了下面的用例,怎样来对其进行处理? //这个问题的提出是因为Gtest是同步的,在使用Gtest进行测试时,拉起gtest主线程,通过主线程来控制测试用例的执行,若要解决这个问题,我们就可能需要对Gtest框架进行更改, //最理想的状态是更改gtest的同步执...

weixin_30294709的博客 779

1G/2.5G Ethernet PCS/PMA or SGMII

SGMII即Serial GMII,串行GMII,收发各一对差分信号线,时钟频率625MHz,在时钟信号的上升沿和下降沿均采样,所以总的数据速率为1.25Gbps=625Mbps*2。参考时钟RX_CLK由PHY提供,是可选的,主要用于MAC侧没有时钟的情况,一般情况下,RX_CLK不使用。收发都可以从数据中恢复出时钟。在TXD发送的串行数据中,每8比特数据会插入TX_EN/TX_ER 两比特控制信息,同样,在RXD接收数据中,每8比特数据会插入RX_DV/RX_ER 两比特控制信息。

sqzjiayou的博客 1万+

S32K144 ADC硬件触发实战:PDB与TRGMUX配置避坑指南

本文深入解析了S32K144微控制器中ADC硬件触发的两种核心方案:PDB与TRGMUX。通过对比其架构差异、详细配置流程及常见问题排查,提供了从寄存器操作到DMA联动的完整优化指南,旨在帮助开发者解决多通道采样时序不稳、CPU负载过高等实际难题,实现高效稳定的数据采集。

weixin_29168153的博客 442

GTest,一个轻松高效的 C++ 测试框架!

嗨,大家好!我是一行。今天咱们来认识超棒的 GTest,它就像一个智能小助手,能帮我们轻松检查 C++代码有没有问题,让代码质量更靠谱。快来和我一起探索 GTest 的奇妙世界吧!一、GTest 基础测试用例编写首先呢,我们得学会写简单的测试用例,这就像是给代码出小考题。#include<gtest/gtest.h> //要测试的函数 intadd(inta,intb)...

一行玩python 616

手把手教你使用transciver-ip核的配置

手把手教你使用transciver-ip核的配置

u012938458的博客 5414

跨平台gTest测试框架的CMake集成实战指南

本文提供了一份跨平台gTest测试框架的CMake集成实战指南。详细讲解了在Linux、macOS和Windows三大操作系统上编译、安装和配置gTest的完整流程,并重点介绍了通过CMake的find_package和FetchContent两种主流方式将gTest无缝集成到C++项目中的最佳实践,旨在帮助开发者构建稳定、高效的跨平台单元测试环境。

l6m7n8的博客 358

基于Java+Maven+Testng+RestAssured+Allure+Jenkins搭建一个接口自动化框架

2、有一个提取表达式列,通过编写每个接口的JSON提取表达式,后边在解析Excel时,对接口执行后的响应数据用该表达式提取出来,保存到环境变量,如果某些接口需要前置接口的响应数据,我们就可以从环境变量中获取该数据出来,从而解决了接口关联的问题。1、在之前介绍过全局配置类Contants中添加一个控制台日志开关控制权限,如果选择为false,则控制台不输出日志,将日志输出到allure报表,选择为true,则在控制台输出日志,不输出到allure报表。

专注于技术分享的博主 1184

FPGA之VGA转HDMI之编码模块的编写

VGA 图像信息到 HDMI 图像信息的转化需要对输入的 VGA 图像信息进行编码、并行串行转换、单端信号转差分信号、单沿采样转双沿采样。 其中,编码模块就是为了完成 VGA 图像数据 8b 转 10b 的编码。其结构框图如下所示: 图1 编码模块框图 图2 编码模块输入输出信号功能框图 图3 编码模块参考流程图 图4 编码模块参考流程图参数说明 下面我们依据HDMI官方手册中的流程图(图3)进行 HDMI 8b...

qq_51264805的博客 3024

ROS 2边学边练(43)-- 利用GTest写一个基本测试(C++)

本篇简单介绍了如何构建一个基本单元测试。

DIANZI520SUA的专栏 2192

Thingsboard PE智慧运维仪表板实例(一)【智慧排口截污实例】

以该实际落地项目为案例,跟着我一起搭建智慧运维大屏!社区版和专业版都通用。本文是致力于快速搭建,所以不会详细去讲Thingsboard的知识点,只讲如何配置和使用部件。

weixin_67440240的博客 1721

【消息队列项目】项目简介以及环境准备

我们放弃了从零开始编写原生Socket的方案,因为其复杂度高,需要处理粘包、拆包、连接管理等一系列繁琐问题。最终选择基于。

2301_80224556的博客 800

Python爬虫实战:携程旅游平台数据爬取(酒店+机票+景点),破解加密与反爬(附完整代码)

携程的反爬机制再复杂,核心逻辑都是“识别非真实用户的请求”,而爬虫的核心就是“让请求看起来像真实用户的行为”。本文的方案从登录态处理、参数加密破解、动态数据抓取,到反爬应对,都是围绕“模拟真实”展开:用Playwright模拟真实浏览器登录,用住宅代理模拟真实用户IP,用随机延迟模拟真实用户的操作频率。掌握了这个核心思路,无论平台的反爬如何升级,都能找到应对方法。当然,爬虫技术是一把双刃剑,合理使用才能发挥其价值。如果你的爬虫项目中遇到了携程的反爬问题,不妨按照本文的步骤试试,大概率能解决问题。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2606

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

GoogleTest异常捕获机制:从C++单元测试崩溃到稳定测试的完整指南

在C++单元测试中,异常处理是确保代码健壮性的关键环节。异常捕获机制基于C++标准异常处理原理,通过try-catch块实现对预期异常行为的验证。其技术价值在于提升测试的稳定性和可靠性,将可能导致进程崩溃的致命错误转化为可控的测试失败信息,从而增强对代码异常路径的覆盖能力。在应用场景上,该机制广泛应用于验证函数边界条件、处理资源分配错误以及测试系统崩溃恢复逻辑。本文聚焦于GoogleTest框架中的异常捕获与死亡测试(Death Test),深入解析其多层次的防御体系,包括测试用例生命周期隔离、信号处理和C

weixin_30740295的博客 413

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: c++ 判断文件存在方法
下一篇: 统计整数转换二进制后含有多少个1
黑猫爱小鹿
博客等级 码龄8年 1万+粉丝 205原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值