gtest编译和使用

2023-11-02

最近想总结一下gtest的使用,方便后面查阅。

1. 编译安装googletest。

2.编写测试用例。

3.编译测试和调试代码。

1.编译安装googletest。

github上下载googletest-release-1.10.0,这里需要注意该版本需要支持c11,链接的c++路径是在 /usr/bin 目录下的,如果该 c++ -version版本低于5.0,编译会报错,需要升级gcc版本。

mkdir build

cd build

cmake ..

make && mak install

2.编写测试用例。

#include <gtest/gtest.h>

TEST(Data, Test1)
{
    Data data;
    data.init("module.json");

    data.ParseModuleTypeString("");
    EXPECT_EQ(data.GetModuleSize(), 2);
}

TEST(Data, Test2)
{
    Data data;
    data.init("module.json");

    data.ParseModuleTypeString("2");
    EXPECT_EQ(data.GetModuleSize(), 1);
}

TEST(Data, Test3)
{
    Data data;
    data.init("module.json");

    data.ParseModuleTypeString("2_3");
    EXPECT_EQ(data.GetModuleSize(), 2);
}


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

3.编译测试和调试代码。

编写CMakeLists.txt

cmake_minimum_required(VERSION 2.8)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_FLAGS_DEBUG "-g -Wall")
set(plat_dir /mnt/gtestcase)

project(test)

include_directories(
${plat_dir}
${plat_dir}/include
${plat_dir}/json
/usr/local/include
/usr/include
)

LINK_DIRECTORIES(
${plat_dir}
/usr/local/lib64
/usr/lib64
)

# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_SRCS 变量
aux_source_directory(json JSON_SRCS)

add_executable(test test.cpp ${JSON_SRCS})
target_link_libraries(test pthread gtest gtest_main rt)

cmake 

make 

./test

       没有使用TEST_F,TEST_F需要将测试类继承 testing::Test,并重写SetUp() 和TearDown(),增加在每次 TEST_F之前的参数初始化工作和用例测试结束后的释放工作。

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

gtest编译和使用 的相关文章

随机推荐

  • 《视觉SLAM十四讲》笔记(1-3)

    目录 文章目录 目录 第1讲 引言 第2讲 初识SLAM 第3讲 三维空间刚体运动 旋转矩阵 点 向量和坐标系 坐标系间的欧式变换 变换矩阵与齐次坐标 齐次坐标 Homogeneous Coordinate 的优势 旋转向量和欧拉角 旋转向
  • STL系列之六 set与hash_set

    https blog csdn net MoreWindows article details 7029587
  • FFmpeg学习笔记--Ubuntu20.04编译安装FFmpeg、FFplay和FFprobe

    目录 1 下载FFmpeg 2 编译FFmpeg 3 设置环境变量 4 测试 1 下载FFmpeg 下载 5 1 版本的 ffmpeg wget http www ffmpeg org releases ffmpeg 5 1 tar gz
  • 运维工程师面试题 ----- 系统网络类

    1 如何检测某个端口所占用的进程 2 对于linux主机的cpu负载使用 什么情况下user的比例升高 什么情况下system的比例升高 请联系实际举例 3 在不umount的情况下 如何重新设置mount的参数 4 如果不小心在系统下执行
  • 01Linux下C语言锁的学习之Linux下的互斥锁

    01Linux下C语言锁的学习之Linux下的互斥锁 概述 为什么需要锁 因为当我们多个线程访问全局变量时 同时操作的话可能存在问题 例如小明和小红同时去拿家里的银行账号里的钱 小明看到时为100块 小红也是 但是小明先拿到 若不加锁 那么
  • GLUE 数据下载与提交

    1 下载 GLUE 任务分为主要的任务 CoLA MNLI MRPC QNLI QQP RTE SST 2 STS B WNLI 以及附加的任务 Diagnostic 下面简称为 AX 其中只有 STS B 是回归任务 其余的全为分类任务
  • webpack 学习(一)前端常用的模块化设计模式之AMD

    AMD 异步模块定义 是为浏览器环境设计的 因为 CommonJS 模块系统是同步加载的 当前浏览器环境还没有准备好同步加载模块的条件 AMD 定义了一套 JavaScript 模块依赖异步加载标准 来解决同步加载的问题 模块通过 defi
  • 【第十一届泰迪杯数据挖掘挑战赛】A 题:新冠疫情防控数据的分析 思路+代码(持续更新)

    第十一届泰迪杯数据挖掘挑战赛 A 题 新冠疫情防控数据的分析 思路 代码 持续更新 问题背景 解决问题 代码下载 数据分析 Task1 Task2 Task3 Task4 问题背景 自 2019 年底至今 全国各地陆续出现不同程度的新冠病毒
  • 控制反转及Bean装配的几种方式

    控制反转及Bean装配的几种方式 Spring两大基础核心 一是控制反转 二是依赖注入 控制反转和依赖注入 控制反转 通俗来讲 就是将bean的创建和销毁交由另一个东西全权管理 这个东西叫做Spring容器 一般来说 在Spring应用中
  • 华为服务器提示错误信息,服务器错误日志

    服务器错误日志 内容精选 换一换 为加强对数据的容灾管理 云堡垒机支持手动备份和配置日志远程备份 提高审计数据安全性和系统可扩展性 通过手动导出 下载各功能模块数据文件保存在本地 可手动备份日志请参见表1 系统内导出的csv文件 用Exce
  • element el-date-picker选择时间范围限制

    element el date picker选择时间范围限制
  • 生物识别技术在场景应用中发挥重大作用

    相较于条码支付 刷脸支付的硬件成本还是比较高 而且占空间 因此 其应用场景没有条码支付丰富 微信扫脸支付 在商超 餐饮以及便利店等场景中 收银空间是有限的 布放哪怕像PAD大小的刷脸支付设备都会觉得局促 如果同时布放两个哪怕像PAD大小的设
  • Odoo 进销存报表现已开源

    根据会计区间或自定义查询时间段 对仓库的产品出入库情况进行查看 模块地址参见内部群公告
  • 谷粒商城微服务分布式高级篇ElasticSearch四——Java使用ElasticSearch

    文章目录 ElasticSearch Rest Client Java使用ElasticSearch 存储数据到ES 从ES检索数据 项目使用ES ElasticSearch Rest Client Java使用ElasticSearch
  • 迷你世界箱子里物品无限取

    废话少说代码如下 在高度为8的箱子可以无限补给 function f e WorldContainer addItemToContainer e x e y e z e itemid e itemnum end 关闭盒子 函数 f 下面是添
  • TypeScript项目配置

    前言 我们需要建立tsconfig json 作用 用于标识 TypeScript 项目的根路径 用于配置 TypeScript 编译器 用于指定编译的文件 重要字段 files 设置要编译的文件的名称 include 设置需要进行编译的文
  • offsetTop、offsetParent、scrollTop以及vue如何实现左右联动效果

    offsetTop 元素到offsetParent顶部的距离 offsetParent 距离元素最近的一个具有定位的祖宗元素 relative absolute fixed 若祖宗都不符合条件 offsetParent为body 如下图所示
  • OrangePi 4b Lts GPIO最高输出频率测试

    根据示波器显示的值 在写入高低电平各有一个usleep 1 时可以输出稳定10kHz的方波 但是10k每段有50us 不知道usleep 1 为什么会变成50us 可能是digitalWrite稳定时间比较长 直接死循环里digitalWr
  • 学生管理系统主要界面

    目录 1 登录界面 login 2 信息管理界面 main 3 页面展示 本篇文章主要介绍学生管理系统主要界面 至于各界面中所含代码均基于Servlet 创建 使用 生命周期 http协议 http请求 http响应 过滤器 Ajax 异步
  • gtest编译和使用

    最近想总结一下gtest的使用 方便后面查阅 1 编译安装googletest 2 编写测试用例 3 编译测试和调试代码 1 编译安装googletest github上下载googletest release 1 10 0 这里需要注意该