使用CLion创建Cmake项目,使用GoogleTest和GoogleMock对代码进行测试

2023-10-27

1、环境准备

  • 注意版本匹配,我本地是g++ 8.1.0 的,最开始装了GoogleTest最新版1.10.0结果发现不能用,又回去下载旧的版本。
  • g++ 8.1.0 应该可以使用 Google Test 1.8.1 版本。
    在这里插入图片描述

Github下载地址:,一般下第一个就行了。

2、CLion创建项目

  • 创建项目,测试可以运行。
    在这里插入图片描述
    在这里插入图片描述

  • 修改CMakeLists.txt文件

# CMakeLists.txt

# 本项目的Cmake配置
cmake_minimum_required(VERSION 3.16)
project(MyProject)

# 1、设置 Google Tesk 的版本号,头文件路径,链接库路径
set(GTEST_VERSION 1.10.0)
add_subdirectory(googletest)
include_directories(googletest/include)

# 2、设置 Google Mock 的路径,头文件路径,链接库路径
set(GMOCK_DIR googletest/googlemock)
include_directories(${GMOCK_DIR}/include)
link_directories(${GMOCK_DIR}/build)

# 3、将测试代码添加到可执行文件中
add_executable(MyTest main.cpp q.cc q.h)

# 4、链接 googletest 库
target_link_libraries(MyTest gtest gtest_main)

# 5、链接 Google Mock 的链接库
target_link_libraries(MyTest gmock gmock_main)


  • 然后在当前目录新建googletest文件夹,把下载到的压缩包整个解压进去
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3、编写测试用例

注意看这里的代码:

# 3、将测试代码添加到可执行文件中
add_executable(MyTest main.cpp q.cc q.h)

main.cpp,这里是测试框架。

#include <gtest/gtest.h>

TEST(HelloTest, BasicAssertions) {
    EXPECT_STRNE("hello", "world");
    EXPECT_EQ(7 * 6, 42);
}

q.cc,这里是要测试的代码

#include "add.h"
int add(int n1,int n2)
{
    return n1+n2;
}

q.h,这里是要测试的代码的函数声明

//
// Created by gwj11 on 2023/6/25.
//

#ifndef MYPROJECT_ADD_H
#define MYPROJECT_ADD_H
int add(int n1,int n2);


#endif //MYPROJECT_ADD_H

这样就可以回到main.cpp中运行了。

在这里插入图片描述

4、复杂测试用例

  • 像下面这种,这样的四件套,github下载过来的,也是可以用的
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 一个错误的测试例子。可以跳转显示具体的报错位置。
    在这里插入图片描述
    在这里插入图片描述

  • 通过的例子
    在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用CLion创建Cmake项目,使用GoogleTest和GoogleMock对代码进行测试 的相关文章

  • 真的干不过,00后整顿职场已经给我卷麻了,想离职了...

    在程序员职场上 什么样的人最让人反感呢 是技术不好的人吗 并不是 技术不好的同事 我们可以帮他 是技术太强的人吗 也不是 技术很强的同事 可遇不可求 向他学习还来不及呢 真正让人反感的 是技术平平 却急于表现自己的人 每天加班到12点 在老
  • jenkins+selenium+python实现web自动化测试

    jenkins selenium可以做到对web自动化的持续集成 Jenkins的基本操作 一 新建视图及job 新建视图 新建job 可以选择构建一个自由风格的软件项目或者复制已有的item 二 准备工作 安装Jenkins插件 SSH
  • GoogleMock:如何精确预期具有特定参数的一次调用,并查看失败诊断?

    也许是一个技巧问题 我的问题是 如果我写 EXPECT CALL mock handleMessage Times 0 expectation 1 EXPECT CALL mock handleMessage Pointee IsLike
  • 如何使用模拟框架测试在谷歌测试延迟后进行的调用

    我目前正在尝试评估不同的测试框架 当使用模拟框架时 我倾向于 FakeIt 但 google mock 也很好 我知道您可以通过在调用函数之前和之后使用操作系统的计时器调用来验证函数的性能来进行自己的 性能 测试 这不是我所追求的 我所做的
  • 软件测试|深入了解Python中的super()函数用法

    简介 Python中的super 函数是一种强大的工具 用于在子类中调用父类的方法 它在面向对象编程中非常有用 可以让你轻松地扩展和重用现有的类 本文将详细介绍super 函数的用法 并提供一些示例来帮助你更好地理解它的功能 什么是supe
  • 软件测试|使用matplotlib绘制平行坐标系图

    简介 绘制平行坐标系图 Parallel Coordinates Plot 是一种用于可视化多维数据的强大方法 在这篇文章中 我们将介绍如何使用Matplotlib库创建平行坐标系图 以及如何解释和定制这种图表 我们将使用一个示例数据集来演
  • 软件测试|使用Python读写yaml文件,你会了吗?

    简介 YAML YAML Ain t Markup Language 是一种可读的数据序列化格式 它常用于配置文件和数据交换 Python 提供了许多库来处理 YAML 文件 在本文中 我们将探讨如何使用 PyYAML 库来读取和写入 YA
  • 软件测试|pycharm关联GitHub的详细步骤

    简介 GitHub 是全球最大的开源代码托管平台之一 而 PyCharm 是一款强大的 Python 集成开发环境 将两者结合使用 可以提高团队协作和代码管理的效率 本文将详细介绍如何在 PyCharm 中管理 GitHub 账号 包括如何
  • 软件测试|Python数据可视化神器——pyecharts教程(九)

    使用pyecharts绘制K线图进阶版 简介 K线图 Kandlestick Chart 又称蜡烛图 是一种用于可视化金融市场价格走势和交易数据的图表类型 它是股票 外汇 期货等金融市场中最常用的技术分析工具之一 可以提供关于价格变动 趋势
  • Airtest自动化测试工具

    一开始知道Airtest大概是在年初的时候 当时 看了一下官方的文档 大概是类似Sikuli的一个工具 主要用来做游戏自动化的 通过截图的方式用来解决游戏自动化测试的难题 最近 移动端测试的同事尝试用它的poco库来做自动化 看样子还不错
  • Googletest Eclipse C++:如何同时具有测试和生产可执行文件?

    我有一个基本问题谷歌测试 https code google com p googletest 在 Eclipse 中 我正在使用测试运行者 https github com xgsa cdt tests runner wiki Tutor
  • 我可以为 gtest 中的值参数化测试指定更好的名称吗?

    我在 gtest 中使用值参数化测试 例如 如果我写 INSTANTIATE TEST CASE P InstantiationName FooTest testing Values meeny miny moe 然后在输出中我看到测试名称
  • 谷歌测试中数组的比较?

    我正在寻找比较谷歌测试中的两个数组 在 UnitTest 中 这是通过 CHECK ARRAY EQUAL 完成的 你在谷歌测试中是如何做到的 我真的建议看看Google C 模拟框架 https github com google goo
  • Googletest - 生成模板类实例化的值

    我在使用 Google 测试时遇到问题 我有一个相当于以下内容的代码 A h template
  • 动态 dll 加载和 googletest

    我有几个基于 MFC 的项目 DLL 我想在里面添加一些 GTest GMock 测试 我需要以最小的努力做到这一点 所以我的计划是 将测试文件添加到每个库并将其链接到 gmock lib 准备一个可执行文件 它将使用最少的 main 动态
  • 将 gtest 与 xcode 结合使用

    我正在尝试在我的计算机上设置一个 C 单元测试库 并认为 google 的 gtest 会很合适 我目前正在使用最新版本的 xcode 运行 mountain lion 我一直在尝试按照发现的说明进行操作here http code goo
  • 为什么 Google Mocks 发现这个函数调用不明确?

    我在尝试开始使用 Google Mocks 时遇到了问题 由于某种原因它无法告诉我在EXPECT CALL宏 即使类型是一致的 我想知道为什么它不只匹配第一个函数 以及我需要做什么 添加才能使其匹配第一个函数 模拟类 class GMock
  • 如何在没有 root 访问权限的情况下在 Ubuntu 上安装 Google Test?

    我正在尝试根据以下方式安装 Google Test这个答案 https stackoverflow com a 21314020 6560773在没有 root 访问权限的 Ubuntu 上 因为我需要在工作中学习和使用它 设法在我自己的用
  • gtest 和 gmock 有什么区别?

    我试图理解的目的google mock Google 的 C 模拟框架 https github com google googletest blob master googlemock README md 我已经与gtest较早 但我还是
  • GoogleTest 枚举类的测试错误打印

    我正在使用 GoogleTest 版本 1 7 0 来测试我的 C 应用程序 我有一个枚举定义如下 namespace MyNamespace enum class MyEnum MyEnumValue MyEnumValue2 Googl

随机推荐

  • node环境下运行js代码缺少window环境原因与解决方案

    node环境下运行js代码缺少window环境原因与解决方案 目录 报错信息与截图 报错原因 解决方案 报错信息与截图 ReferenceError window is not defined 外链 报错原因 使用node环境直接运行js文
  • rpm软件包管理,YUM以及源码编译安装

    一 初始rpm软件包 1 软件包是由以下几个部分组成的 1 二进制程序 2 配置文件 组成方式有三种 单个文件 将主配置文件分割为多个小文件 并放置于某目录中 单个文件 在内部分割为多个段的 3 库文件 静态库 动态库 4 帮助文件 手册页
  • android的padding属性,android_padding属性及介绍.doc

    Android 的Margin和Padding属性以及支持的长度单位 Posted on 2011 04 26 18 41 蝈蝈俊 阅读 2960 评论 0 编辑 收藏 Android的Margin和Padding跟Html的是一样的 如下
  • JAVA 数据库读取blob(图片)合成多张图 基于Struts2和Spring

    今天工作要求把存在数据库的图片 blob 读取出来 之前没有做过所以找了不少资源 在这里记录一下 因为用的是jdbcTemplate 在这里一起贴出来 以防忘了 因为数据库查出来的图片是多张图 在这里返回List 到前台再转成byte 有些
  • spring Boot + Jpa(Hibernate) 架构基本配置

    1 基于springboot 1 4 0 RELEASE版本测试 2 springBoot Hibernate Druid Mysql servlet jsp 不废话 直接上代码 一 maven的pom文件
  • 手机网站如何封装成微信小程序

    封装手机网站为完整的微信小程序需要进行一系列的开发工作 涉及到多个文件和代码的编写 以下是一个基本的小程序代码结构示例 可以作为你封装手机网站的起点 app js 小程序的入口文件 用于全局的初始化和配置 App 全局数据 globalDa
  • ADMM算法求解一个简单的例子

    求解下面的带有等式约束和简单的边框约束 box constraints 的优化问题 minx y x 1 2 y 2 2s t 0 x 3 1 y 4 2x 3y 5 begin equation begin aligned min x y
  • 聊一聊.NET的网页抓取和编码转换

    在本文中 你会了解到两种用于 HTML 解析的类库 另外 我们将讨论关于网页抓取 编码转换和压缩处理的知识 以及如何在 NET 中实现它们 最后进行优化和改进 文章目录 1 背景 2 网页抓取 3 编码转换 4 网页压缩处理 5 代码优化
  • ElasticSearch+Kibana on K8s 讲解与实战操作(版本7.17.3)

    文章目录 一 概述 二 ElasticSearch 节点类型与作用 三 K8s 集群部署 四 ElasticSearch on K8s 开始部署 1 下载安装包 2 构建镜像 3 修改yaml编排 4 开始部署 5 测试 6 elastic
  • 5. 筛选和过滤

    文章目录 筛选和过滤 条件筛选 提取 抽样 最值 Index np argmax argmin np argsort 筛选和过滤 这小节与索引和切片有点类似 但倾向于从 整体 中统一筛选出 符合条件 的内容 而索引和切片更多的是依照 某种方
  • C++编译警告:warning C4305: 'initializing' : truncation from 'const double' to 'float'

    float a 4 14E 3 float a 3 1 类似的语句在编译的时候 会产生如下警告 warning C4305 initializing truncation from const double to float 虽然说不会导致
  • Apriori算法详解之【一、相关概念和核心步骤】

    感谢红兰整理的PPT 简单易懂 现在将其中精彩之处整理 与大家分享 一 Apriori算法简介 Apriori算法是一种挖掘关联规则的频繁项集算法 其核心思想是通过候选集生成和情节的向下封闭检测两个阶段来挖掘频繁项集 Apriori 先验的
  • 36奇迹发布网_8点1氪:王思聪已被取消限制消费令;拼多多大跌近23%,下一季度会继续“百亿补贴”;苹果发布千元iPhone11智能手机壳...

    11月20晚间 查询中国执行信息公开网发现 王思聪已不在限制消费人员名单之中 文 梦想家菜菜 邹黄晶 整理 Kr Lab 点击上方 36氪随声听 一键收听大公司热门新闻 听完音频记得添加进入 我的小程序 中哟 蜗牛移动 据IPO早知道 蜗牛
  • C++:auto&decltype

    auto用法 总述 C 11 auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型 类似的关键字还有decltype 举个例子 auto的作用就是为了简化变量初始化 如果这个变量有一个很长很长的初始化类型 就可以用au
  • CAN学习笔记3:STM32 CAN控制器介绍

    STM32 CAN控制器 1 概述 STM32 CAN控制器 bxCAN 支持CAN 2 0A 和 CAN 2 0B Active版本协议 CAN 2 0A 只能处理标准数据帧且扩展帧的内容会识别错误 而CAN 2 0B Active 可以
  • BTC-数据结构

    哈希指针 hash pointers 普通的指针存储的是某个数据在内存中的首地址 哈希指针不仅要保存地址 还要保存数据的哈希值 通过哈希指针不仅能找到数据的位置 还能检测出数据有没有被篡改 因为保存了哈希值 区块链 比特币的基本数据结构即区
  • 泰勒图(Taylor diagram)

    感谢大家的收藏 我会继续完善这篇博客的 文章目录 定义 例子 拓展 英文原版定义 python绘图方法 定义 泰勒图 泰勒图1常用于评价模型的精度 常用的精度指标有相关系数 标准差以及均方根误差 RMSE 一般而言 泰勒图中的散点代表模型
  • PySpark环境配置

    首先 要知道PySpark是Spark为Python提供的API库 因此使用 pip install pyspark 下载pyspark不等于下载了spark 因此 配置pyspark环境 首先需要下载spark 1 linux下载spar
  • Android设备启动时出现pop音

    Android设备启动时出现pop音 Android设备启动时出现pop音 环境介绍 原因定位 Android混音 TEE SINK Android HAL层文件 异常原因 解决方案 解决方案应用 Android设备启动时出现pop音 针对
  • 使用CLion创建Cmake项目,使用GoogleTest和GoogleMock对代码进行测试

    文章目录 1 环境准备 2 CLion创建项目 3 编写测试用例 4 复杂测试用例 1 环境准备 注意版本匹配 我本地是g 8 1 0 的 最开始装了GoogleTest最新版1 10 0结果发现不能用 又回去下载旧的版本 g 8 1 0