gtest 注意事项

GTest基础学习-04-第3个单元测试-测试夹具test fixture 这篇来学习一下Gtest中更高级一些的特性test fixture,测试夹具的基本上使用。什么的场景需要使用到测试夹具呢?测试夹具是哪个宏,这篇来学习这个主题。 1.什么叫test fixture 什么是测试夹具,这个概念在任何xUnit系列的单元测试框架都会出现。一般是指,所有的测试用例都可以共享的步骤,例如初始化和事后清理操作,能提供这个功能的对象叫test fixture。 在test fixture是这样使用的,我们需要单独写一个类并且继承testing::Test,如果有必要都需要实现. 阅读详情

转:http://www.cnblogs.com/bangerlee/archive/2011/10/25/2218392.html

为什么测试用例和测试实例命名中不应包含下划线

在C++中,对于以下情况,相应的标识可能会被编译器或标准库使用:

  1. 以下划线开始并紧接一个大写字母的标识
  2. 包含连续两个下划线的标识

为避免标识符冲突,用户代码中不应自定义以上两种情况的标识。使用TEST()或TEST_F()时,滥用下划线,将有可能产生标志符命名冲突。

当我们定义以下测试实例并执行测试程序时,Gtest会为我们生成一个名为TestCaseName_TestName_Test的类。

TEST(TestCaseName, TestName)

如果TestCaseName或TestName中包含下划线,情况会怎样呢?

  • TestCaseName以"_"开头(例如_Foo),我们得到_Foo_TestName_Test
  • TestCaseName以"_"结尾(例如Foo_),我们得到Foo__TestName_Test
  • TestName以"_"开头(例如_bar),我们得到TestCaseName__bar_Test
  • TestName以"_"结尾(例如bar_),我们得到TestCaseName_bar__Test

以上命名方式都有可能产生命名冲突,因而TestCaseName和TestName以“_"开头或结尾均不可取。

如果TestCaseName或TestName命名中包含下划线,情况又会怎样呢?

TEST(Time, Flies_Like_An_Arrow) { ... }
TEST(Time_Flies, Like_An_Arrow) { ... }

假设我们同时定义了两个测试实例,Oops! 这时Gtest将产生同一个类:Time_Flies_Like_An_Arrow。

因而为避免命名冲突的情况发生(不管是与系统标志冲突或自定义的标志间冲突),我们的测试用例或测试实例的命名最好不包含下划线。当然,这是建议而不是必须的。

在测试固件类中,为什么要用set-up/tear-down函数,而不使用构造函数/析构函数

还记得测试固件的作用吗?通过测试固件,Gtest为每一个测试实例生成一个测试固件对象,该对象为每个测试实例提供独立的数据配置,通过编写SetUp()/TearDown()函数,我们可以对数据进行初始化和销毁操作。

对于一个类而言,构造函数和析构函数不是同样有初始化数据/销毁数据的作用吗?Gtest提供SetUp()和TearDown()岂不是多此一举?No,no,no, 对于以下情况,还非得用SetUp()/TearDown()不可:

对于销毁操作中包含异常抛出调用的,由于在C++的析构函数中不能抛出异常,这时候需使用TearDown()调用(关于C++析构函数抛出异常的介绍,请看这里)。

为什么当我调用RUN_ALL_TESTS()函数时,编译器抛出"ignoring return value"警告

一些Gtest使用者忽略了RUN_ALL_TESTS()的返回值,理应这样调用:

return RUN_ALL_TESTS();

而不是这样:

RUN_ALL_TESTS();

测试程序根据RUN_ALL_TESTS()的返回值判断其所包含的测试实例是否通过。如果在main()函数中忽略其返回值,即使是某个测试实例检测失败,整个测试程序也会被认为是无检测失败地成功执行。

为避免误用RUN_ALL_TESTS(),对于不作为main()返回值的调用,gcc将对此抛出警告,为消除该警告,将RUN_ALL_TESTS()作为main()函数的返回值即可。

如何为一个测试固件定义多个测试用例

我想编写多个测试实例,它们对应于同一个测试固件,对此,是否要为每一个测试实例编写新的测试固件类?就像这样:

复制代码
class FooTest : public BaseTest {};

TEST_F(FooTest, Abc) { ... }
TEST_F(FooTest, Def) { ... }

class BarTest : public BaseTest {};

TEST_F(BarTest, Abc) { ... }
TEST_F(BarTest, Def) { ... }
复制代码

这里类FooTest和类BarTest什么都不做,我们这样定义只是为了产生两个不同的测试用例名。

其实使用typedef能更便捷地达到目的:

复制代码
typedef BaseTest FooTest;

TEST_F(FooTest, Abc) { ... }
TEST_F(FooTest, Def) { ... }

typedef BaseTest BarTest;

TEST_F(BarTest, Abc) { ... }
TEST_F(BarTest, Def) { ... }
复制代码


关于Gtest的更多FAQ,请参看这里。

VS2010+gtest使用总结 下载配置流程 简易配置适用于小功能的验证 专业配置适用于大项目的验证 代码编写入门 gtest单元测试的使用技巧 注意事项 C++项目开发离不开的测试框架—gtest! 刚刚啃掉这块骨头、总结一下以备后续使用。以下配置在VS2010+win7_64bit下: 下载配置流程 下载google test:https://github.com/google/googletest 解压,寻找目录msvc 阅读详情

相关推荐

RPA 财务共享中心与RPA赋能

在和集团财务官交流的时候,客户经常会提到FSSC,其中有准备建立FSSC,正在建立FSSC,以及已建成FSSC正使用的,当中会有些对FSSC的疑虑和问题,所以花费些时间对FSSC进行了深入调研,从而也有幸拜读了王兴山、陈剑、梅震、钱自严等专业人士写的几本关于FSSC的书,对FSSC的前因后果有了更深入的认识,同时结合自己在FSSC的一些项目经验,故做了本次分享。 本文章主要分享财务共享中心以及R...

weixin_40244959的博客 2756

Google C++单元测试框架(Gtest)系列教程之六——FAQ节选

这一节,我们来看Gtest的FAQ(Frequently-Asked Questions)。 为什么测试用例和测试实例命名中不应包含下划线 在C++中,对于以下情况,相应的标识可能会被编译器或标准库使用: 以下划线开始并紧接一个大写字母的标识 包含连续两个下划线的标识 为避免标识符冲突,用户代码中不应自定义以上两种情况的标识。使用TEST()或TEST_F()时,滥用下划线,...

weixin_33912638的博客 229

GPS数据处理必备:IGS精密星历下载与使用全攻略(附武汉大学/CDDIS/CODE/GFZ地址)

本文为GPS/GNSS数据处理者提供了IGS精密星历的完整下载与使用指南。详细解析了最终、快速、超快速三种精密星历产品的区别与选择策略,并手把手教学如何从武汉大学、CDDIS、CODE、GFZ四大主流数据中心高效获取数据,涵盖文件命名规则解析及自动化下载脚本,助力科研与工程应用。

weixin_29234239的博客 683

C++ gtest 相关

如果一个测试用例中的断言失败,测试框架会将其标记为失败,并继续执行后续的测试用例。// 运行 TestSuiteA 中的所有测试用例。// 运行所有测试用例。在上面的示例代码中,我们故意将 TestSuiteA 中的 TestA2 的断言设置为失败。std::cout

weixin_48721345的博客 617

十大排序算法详解(一)冒泡排序、选择排序、插入排序、快速排序、希尔排序

冒泡排序、选择排序、插入排序、快速排序、希尔排序

HK的博客 18万+

【nvidia-B200 生产环境】NVIDIA 570.124.06+Cuda12.8 Ubuntu22.04 nccl-test 一键部署脚本(免修改复制即用)

目录1. 初始化与日志记录2. 安装基础工具与配置更新3. NVIDIA 驱动安装 570.124.064. 安装 Mellanox OFED 24.10-2.1.8.05. 安装 CUDA 12.86. 安装 NCCL 和测试7. 配置 rc.local 和其他优化8. B200 单独步骤9. 最终测试与重启10. 完整生产脚本,复制即可直接使用总结 功能: 设置日志目录和日志文件路径。 使用 命令将标准输出和错误输出同时写入日志文件和终端。 记录脚本开始时间,并计算开始的秒数

jundao1997的专栏 2798

gtest/gmock 简单实例返回值为自定义类型

帖子:gtest/gmock 简单实例给出了返回值为内置类型的例子,在实际项目中经常出现返回值为自定义类型的数据对象,当被测试函数的返回值为自定义类型时,如何mock? 简单的例子: main函数所 // GoogleTest.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <iostream> #include <gtest/gtest.h> #include <gmock/gmock.h> #incl...

beibeix2015的博客 2448

前端开发 - 完美解决video.js和flv.js视频同时播放数量限制的问题,即浏览器针对同一域名的请求限制问题(解决flv.js/video.js在页面播放最多不超过6个问题、浏览器并发请求限制数

flv.js,video.js,vue,reactive,uniapp,前端开发,flv视频同时播放有限制怎么办,浏览器限制多个视频同时播放怎么办,使用flv.js在前端播放,最多只能播放6个视频,突破浏览器域名并发限制,如何解决flvjs与videojs视频播放同时播放数量限制,video.js 一个页面同时播放多个视频的实例代码,解决网页视频最大只能播放6路的问题,浏览器只能播放6路http-flv流的解决方法,一个浏览器播放5个或者6个flv的视频就不能播放了,video.js 无法在页面同时播放多个

✅ 精选推荐文章 4995

了解Google Test(gtest)

Google Test也叫gtest,是一个面向C++的单元测试框架。它在Google公司内部使用了多年,并且每天都在上千个项目中进行着单元测试。现在已经成为了C++单元测试的事实标准之一。gtest以其高效、灵活、可移植和可扩展等优点获得广泛好评。

zhangzx36的博客 2601

C#里使用NModbus来创建一个TCP从站服务

摘要:本文介绍了一个用C#实现的Modbus TCP从站服务器,基于.NET Framework 4.6.1开发。代码使用NModbus库创建TcpListener和ModbusSlaveNetwork,支持设置IP地址、端口号和从站ID。服务器实现了数据存储初始化功能(包括线圈和保持寄存器),并提供了启动/停止操作的UI界面和日志记录功能。该解决方案适用于需要调试Modbus TCP协议的场景,特别适合无法升级到更高版本.NET Framework的环境。

大坡3D软件开发 478

MALTAB程序利用质心法去寻峰

质心法的优点是简单易实现且计算速度快,适用于数据点较少或峰值较明显的情况。然而,对于复杂的数据或多峰曲线,质心法可能无法准确识别所有峰值,因此在这些情况下可能需要使用更复杂的峰值检测算法。质心法(Centroid Method)是一种寻找峰值的方法,其基本原理是通过计算数据窗口内的质心位置来确定峰值的位置。质心是指在一维数据中,按照数据的幅值对位置进行加权平均的结果,即质心位置为数据幅值加权平均值的位置。变量定义了计算质心的窗口大小。最后,绘制了找到的峰值位置和幅值点,并显示了找到的峰值位置和幅值的结果。

走向CTO的路上... 1347

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

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

私房菜 4629

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Gtest(Google Test)使用

编译时要带 -LGtest/lib -lgtest -lgtest_main -lgmock -lgmock_main。把googletest-main./googletest-main/googletest/include/下。把googletest-main./googletest-main/googlemock/include/下。将上面下载的gtest代码文件夹拖到vscode里,然后选择对应的CMakeLists.txt。把编译生成的lib文件夹复制Gtest文件夹。复制到Gtest文件夹。

咯咯哒 1786

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

gtest linux 性能测试,Linux下Gtest的安装与使用

一、安装Gtest1、下载最新版gtest源码git clone https://github.com/google/googletestcd googletest/googletest2、编辑CMakeLists.txt文件,将option(BUILD_SHARED_LIBS “Build shared libraries (DLLs).” OFF)中的OFF改为ON3、编译(需要安装cmake...

weixin_42516414的博客 641

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

单元测试框架gtest学习(五)—— 运行参数

系统环境变量命令行参数代码中指定FLAG因为提供了三种途径,就会有优先级的问题, 有一个原则是,最后设置的那个会生效。不过总结一下,通常情况下,比较理想的优先级为:命令行参数 > 代码中指定FLAG > 系统环境变量为什么我们编写的测试案例能够处理这些命令行参数呢?是因为我们在main函数中,将命令行参数交给了gtest,由gtest来搞定命令行参数的问题。这样,我们就拥有了接收和响应gtest命令行参数的能力。

qq_58158950的博客 1370

cmake应用:集成gtest进行单元测试

对于追求质量的程序员,为自己的代码编写全面的单元测试是必备的基础技能,在编写单元测试的时候也能复盘自己的代码设计,是提高代码质量极为有效的手段。Google Test是Google开源的一个跨平台的C++单元测试框架,简称gtest,它提供了非常丰富的测试断言、判断宏,极大方便开发者编写测试用例的流程,也是很多开源项目使用的测试框架。这里的单元测试也只是作为示例,在真实的项目中,单元测试的编写往往更加复杂,而且这也还只是提高的软件鲁棒性中的一环,追求极致还需要更多努力。

nhb687095的博客 136

【C++中级篇】gtest的使用方法及cmake配置

在一项c++工程中,会存在很多类,很多功能方法,如果每个对外的接口方法都通过在业务中发现问题,是一件相当糟糕的事儿,而且效率低下。如果针对每个接口都设计一个主函数进行验证,需要运行很多程序,为解决这个问题,单元测试模块应运而生,本期探讨下由google开发的单元测试模块gtest的使用方法。

行走的漂流瓶的博客 4514

GTest学习笔记(六)

本文主要是在cpp文件里使用了官网提供的示例代码来熟悉GTest的三种事件机制(TestCase级别、TestSuite级别、全局)

weixin_44784957的博客 3050

GTest 使用笔记

本文对比了三种C++测试框架:CppUnit、CxxTest和Google Test(GTest)。CppUnit较陈旧且存在设计缺陷;CxxTest改进了CppUnit的不足,具有更好的可移植性但依赖脚本预处理;GTest作为Google开发的跨平台框架,功能全面且使用广泛。文章详细介绍了GTest的安装方法、基本使用流程(包括测试代码编写、编译和执行)以及丰富的断言类型(布尔值、数值、字符串、异常等检查)。最后给出了使用建议,如避免将测试文件编入主库、推荐链接gtest_main而非自定义main函数等

人无远虑,必有近忧 2952

VS使用gtest调试程序,vs的调试里面的命令参数该怎么填写

假设在MathFunctionsTestSuite中有一个测试用例名为AdditionTest,要运行这个特定的测试用例,就在命令参数中填写–gtest_filter=MathFunctionsTestSuite.AdditionTest。例如,如果你有一个测试套件名称为MathFunctionsTestSuite,想要运行这个套件中的所有测试用例,在 VS 的调试命令参数中填写–gtest_filter=MathFunctionsTestSuite.参数:通常不需要特殊的命令参数来运行所有测试用例。

cheny的博客 732

gtest 测试框架

本文基于笔者的实际开发经验,言简意赅地讲解了C/C++单元测试框架gtest的主要使用方法和注意事项,并设计了若干可编译的精简示例,给出了运行效果图。既可以用作gtest的入门教程,也适合作为工作中的快速参考。 AD:   Google C++ Testing Framework(简称gtest,http://code.google.com/p/goog

linuxarmsummary的专栏 3227

gtest配置过程

1、配置前准备:电脑环境:Windows7 旗舰版 gtest代码:https://github.com/google/googletest IDE:visual studio 2015专业版2、下载源代码:昨天学习了git刚好可以用上:git学习笔记 直接通过git clone下载源代码带本地电脑3、进入googletest源代码目录如下:4、打开通过vs打开sln文件一共4个project

_Dre的博客 1619

深入理解gtest C/C++单元测试经验谈

【转自】http://developer.51cto.com/art/201108/285290.htm 本文基于笔者的实际开发经验,言简意赅地讲解了C/C++单元测试框架gtest的主要使用方法和注意事项,并设计了若干可编译的精简示例,给出了运行效果图。既可以用作gtest的入门教程,也适合作为工作中的快速参考。 Google C++ Testing Framew

xth6314的专栏 660

使用gtest对类进行白盒测试

gtest是一个很好用的测试框架,可以很方便地对函数进行单元测试。 主页:http://code.google.com/p/googletest/ 一篇好文章,《玩转Google开源C++单元测试框架Google Test系列》:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 在使用gtest的过程中,我发现使

踏雪无痕 2294
上一篇: Function 与 Functor 区别
下一篇: 析构函数中抛出的异常
Superr爬爬虫
博客等级 码龄19年 72粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值