使用 Visual Studio GoogleTest编写 C/C++ 单元测试——入门篇

入门教程

Visual Studio 新建 GoogleTest项目,一路选默认参数在这里插入图片描述
pch.h

#pragma once#include "gtest/gtest.h"int add(int a, int b);

pch.cpp

#include "pch.h"int add(int a, int b)
{return a + b;
}

test.cpp

#include "pch.h"TEST(TestCaseName, TestName) {EXPECT_EQ(4, add(1,3));EXPECT_TRUE(add(1,2)==3);
}

编译运行
在这里插入图片描述
成功

[C++] gtest入门教程

开始尝试google test单元测试工具(又是MTd/MDd搞的鬼!)附带VC运行库详解

对现有解决方案添加GoogleTest项目

在当前解决方案下,新建GoogleTest项目
在这里插入图片描述
引用自己要测试的工程,配置相关属性(C++ 附加包含目录等)

#include "pch.h"
#include "要测试的头文件.h"
SLineProcessor lineProcessor;
TEST(TestCaseName, TestName) {EXPECT_EQ(lineProcessor.bClose, 1);EXPECT_TRUE(true);
}

运行
搞定

如何使用GoogleTest 测试C++重构代码

要使用Google Test来测试C++重构的代码,你可以按照以下步骤进行操作:

  1. 集成Google Test:首先,将Google Test框架集成到你的项目中。可以通过下载Google Test源代码并将其添加到你的项目中,或者使用包管理工具(如vcpkg)进行安装。

  2. 创建测试文件:为每个需要测试的模块创建对应的测试文件。通常,测试文件的命名约定是在源文件的基础上添加"_test"后缀。

  3. 编写测试用例:在测试文件中,使用Google Test提供的宏和断言来编写测试用例。例如,使用TEST()宏定义一个测试用例,并在其中使用断言宏(如EXPECT_EQ()ASSERT_TRUE()等)进行期望结果的验证。

  4. 使用Google Test框架的断言:Google Test提供了许多断言宏来帮助验证测试结果是否符合预期。这些断言宏可以比较值、判断异常情况、检查容器等等。详细的断言列表和用法可以在Google Test文档中找到。

  5. 运行测试:使用适当的命令行工具或集成到IDE中的插件来运行测试。一般情况下,你需要提供可执行文件名称,并指定运行测试的参数,如过滤器(指定要运行的特定测试用例)和输出结果的格式。

  6. 分析测试结果:查看测试结果报告,了解哪些测试通过,哪些失败。如果有失败的测试,查看详细错误信息以帮助定位问题。

  7. 修复问题:根据失败的测试用例和错误信息,找出导致失败的原因,并修复代码中的问题。确保修复后再次运行单元测试以确认问题已解决。

总之,使用Google Test测试重构的C++代码与以前一样,你只需在新的测试文件中重新编写测试用例,使用Google Test提供的断言宏来验证测试结果即可。这样可以确保重构后的代码仍然能够通过相同的测试用例,并保持代码的质量和稳定性。

chatgpt生成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/38384.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【广州华锐视点】AR电力职业技能培训系统让技能学习更“智慧”

随着科技的发展,教育方式也在不断地进步和创新。其中,增强现实(AR)技术的出现,为教育领域带来了全新的可能。AR电力职业技能培训系统就是这种创新教学方法的完美实践,它将虚拟与现实相结合,为学生提供了一个沉浸式的学…

【数据库】Sql Server可视化工具SSMS条件和SQL窗格以及版本信息

2023年,第34周,第1篇文章。给自己一个目标,然后坚持总会有收货,不信你试试! SQL SERVER 官方本身就有数据库可视化管理工具SSMS,所以大部分都会使用SSMS。以前版本是直接捆绑, 安装完成就自带有…

Python多线程与线程池(python线程池ThreadPoolExecutor)concurrent.futures高级别异步执行封装

文章目录 Python多线程与线程池一、Python多线程1.1 线程简介1.2 Python中的多线程1.3 GIL限制 二、线程池2.1 Python中的线程池 三、代码分析四、参考资料 Python多线程与线程池 一、Python多线程 在进行复杂的计算或处理大量数据时,可以通过创建多个线程来同时执…

Sentinel规则持久化

首先 Sentinel 控制台通过 API 将规则推送至客户端并更新到内存中,接着注册的写数据源会将新的规则保存到本地的文件中。 示例代码: 1.编写处理类 //规则持久化 public class FilePersistence implements InitFunc {Value("spring.application:n…

云原生k8s---资源限制、探针

目录 一:资源限制 1、资源限制原因 2、Pod 和 容器 的资源请求和限制 3、CPU 资源单位 4、内存 资源单位 5、事例 (1)事例一 (2)事例二 二:重启策略 1、重启策略模式 2、事例 三:探针…

Win10提醒事项如何打开?电脑上如何添加日程提醒?

有不少上班族表示自己在日常办公时,经常会忘记一些重要的事情,例如领导安排给自己的任务、会议安排、项目截止日期等。为了避免自己忘记工作事项,很多人都想要在电脑上设置提醒事项或添加日程提醒。那么Win10提醒事项如何打开呢?P…

Golang 中的 archive/zip 包详解(一):实现 ZIP 压缩与解压

Golang 中的 archive/zip 包用于处理 ZIP 格式的压缩文件,提供了一系列用于创建、读取和解压缩 ZIP 格式文件的函数和类型,使用起来非常方便。 实现压缩功能 1、首先需要创建一个 zip 文件。 zip 文件也是一个文件,首先需要创建一个基础的…

[Leetcode] [Tutorial] 多维动态规划(未完待续)

文章目录 62. 不同路径Solution 62. 不同路径 一个机器人位于一个 m ∗ * ∗ n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角。 问总共有多少条不同的路径? 示例…

【electron】electron项目创建的方式:

文章目录 【1】npm init quick-start/electron(推荐)【2】 克隆仓库,快速启动【3】 通过脚手架搭建项目【4】 手动创建项目 【Electron官网】https://www.electronjs.org/zh/docs/latest/api/app 【1】npm init quick-start/electron&#xf…

Excelize Go语言操作 Office Excel文档基础库

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式&#xf…

微信小程序实现左滑删除

一、效果 二、代码 实现思路使用的是官方提供的 movable-area:注意点,需要设置其高度,否则会出现列表内容重叠的现象。由于movable-view需要向右移动,左滑的时候给删除控件展示的空间,故 movable-area 需要左移 left:…

Android Gradle Plug-in(AGP ) 的对应关系

AGP 和 Gradle 版本的对应关系 Android Gradle 插件版本说明 | Android 开发者 | Android Developers 插件版本所需的最低 Gradle 版本8.18.08.08.07.47.57.37.47.27.3.37.17.27.07.04.2.06.7.1 旧版 插件版本所需的 Gradle 版本4.1.06.54.0.06.1.13.6.0 - 3.6.45.6.4…

sqlloader学习笔记

INFILE的用法 1)模糊导入多个数据的文件。 可以在文件名中使用通配符。 星号 (*) 表示复数字符,问号 (?) 表示单个字符。 INFILE emp*.dat INFILE m?emp.dat 2)如果不需要导入数据…

jQuery EasyUI datagrid 无记录时,增加“暂无数据“提示

我们只需要在onLoadSuccess中添加如下代码&#xff1a; if (data.total 0) {var body $(this).data().datagrid.dc.body2;body.find(table tbody).append(<tr><td width" body.width() " style"height: 35px; text-align: center;"><h…

C语言学习之封装自定义函数,实现atoi函数功能

实例要求&#xff1a;atoi函数的功能是把字符串转成整型数值并输出&#xff1b;把字符串"123456"转换成数值123456 &#xff0c;并返回数值&#xff1b;函数名&#xff1a; int myatoi(char *str);实例分析&#xff1a; 1.自定义的封装函数类型是整型&#xff0c;…

在阿里云Linux服务器上部署MySQL数据库流程

阿里云百科分享在阿里云Linux服务器上部署MySQL数据库流程&#xff0c;MySQL是一个关系型数据库管理系统&#xff0c;常用于LAMP和LNMP等网站场景中。本教程介绍如何在Linux系统ECS实例上安装、配置以及远程访问MySQL数据库。 目录 背景信息 Alibaba Cloud Linux 2/3、CentO…

上传excel文件

文件上传&#xff0c;其实就是用el-upload组件来实现上传&#xff0c;只是换了样式&#xff0c;和图片上传一样 <el-form-item label"选择文件"><el-input placeholder"请选择文件" v-model"form.file" disabled style"width: 45…

java 使用log4j显示到界面和文件 并格式化

1.下载log4j jar包https://dlcdn.apache.org/logging/log4j/2.20.0/apache-log4j-2.20.0-bin.zip 2. 我只要到核心包 &#xff0c;看需要 sources是源码包&#xff0c;可以看到说明。在IDEA里先加入class jar后&#xff0c;再双击这个class jar包或或右键选Navigate ,Add ,…

android.system.ErrnoException: open failed: EPERM (Operation not permitted)

android 10(Q)开始增加了沙盒机制&#xff0c;不能直接把文件保存到/sdcard目录下&#xff0c;只能保存到APP专属目录下&#xff1b;AndroidManifest.xml在标签下增加属性【android:requestLegacyExternalStorage“true”】可以暂时保存到/sdcard路径下&#xff0c;但是Android…

Revit SDK 介绍:PanelSchedule 配电盘明细表

前言 这个例子介绍 Revit 的配电盘明细表&#xff0c;PanelSchedule。Revit 的电器专业在国内用的并不是十分广泛&#xff0c;但从功能上来说还是比较完整的。 内容 这个例子里有三个命令&#xff1a; PanelScheduleExport - 导出配电盘明细表InstanceViewCreation - 创建配…