GTest和Catch2单元测试学习(附Cmake测试代码库)

kevin_CTest

CTest 单元测试学习
Gitee库: https://gitee.com/bigearrabbit/kevin_ctest.git
示例多是从网页文章上摘取的,大部分记录在下面,或者源码内。供学习参考。

CTest

学习Catch2 框架

  • 单个文档的测试架构,使用方便,
  • 据说 使用率排第二
  • CSDN 文章 catch2:一个好用的C++单元测试框架
  • 视频教程 https://www.bilibili.com/video/BV1pz4y1i7Lm

GoogleTest

  • 学习Google Test框架
  • 据说 使用率排第一

使用说明

google test sample

参考:

  • CMake C++开发 windows 下 googletest 模板项目教程搭建

  • GoogleTest使用教程

编译和运行测试
  1. clone代码:
git clone https://gitee.com/bigearrabbit/kevin_ctest.git
  1. 检出子模块
    使用小乌龟或命令行检出子模块
[submodule "3rdParty/googletest"]path = 3rdParty/googletesturl = https://github.com/google/googletest.git
  1. 编译
  • 在项目的根目录下创建一个构建目录,配置项目,构建项目并运行测试:
mkdir build
cd build
cmake ..
。。。。
  • 或 用Vscode打开项目,Cmake编译即可,已经配置好了
  1. 启动测试

可以只编译一个测试:

  • 火箭🚀在哪里,应该只运行哪个
  • 这个锤子🔨在某个项目上,编译就只编译这个

在这里插入图片描述

  • 运行
    在TESTING模块里面可以选择全运行或者只运行某个测试。
    在这里插入图片描述

  • CMakeLists里面运行
    这里可以逐个运行测试
    在这里插入图片描述

  • 底部工具条控制:
    在这里插入图片描述
    这个在icon模式时没有出来,compact可以
    在这里插入图片描述

解决错误:
  • gtest.lib(gtest-all.cc.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值
    参考: https://blog.csdn.net/l1216766050/article/details/128571511
 # 使用来全局设置运行时库。 
set(CMAKE_CXX_FLAGS_DEBUG "/MTd")
set(CMAKE_CXX_FLAGS_RELEASE "/MT")

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

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

相关文章

FastGPT 报错:undefined 该令牌无权使用模型:gpt-3.5-turbo (request id: xxx)

目录 一、FastGPT 报错 二、解决方法 一、FastGPT 报错 进行对话时 FastGPT 报错如下所示。 [Error] 2024-07-01 09:25:23 sse error: undefined 该令牌无权使用模型:gpt-3.5-turbo (request id: xxxxx) {message: 403 该令牌无权使用模型:gpt-3.5-turbo (request id: x…

人机交互中信息之间的距离

在人机交互中,信息之间的距离可以从多个角度来理解和描述: 1、物理距离 :这指的是用户与交互设备(例如电脑、手机、智能设备)之间的物理空间距离。随着移动设备的普及和技术的发展,用户可以在不同的物理位置…

vue3中svg图标的封装与使用

组件封装&#xff1a; <template><svg :class"svgClass" :style"{ width: size px, height: size px, color: color, verticalAlign:deviationem}" aria-hidden"true"><use :xlink:href"#icon-${name}" /></s…

scss学习总结

摘录更改至 scss: map:merge 和 each $attribute, $value in $variables 研究 Element-plus 源码时&#xff0c;有以下一段代码&#xff1a; // path: element-plus/packages/theme-chalk/src/button.scss include b(button) {include set-component-css-var(button, $butto…

RISC-V的历史与设计理念

指令集是什么&#xff1f; 如果把软件比作螺丝钉&#xff0c;硬件比作螺母&#xff0c;那么指令集架构就是螺丝钉与螺母的蓝图。我们需要根据蓝图设计可以匹配的螺丝钉与螺母。——包云岗老师 RISC-V的起源 以往比较流行的指令集&#xff1a;ARM&#xff0c;MIPS&#xff0c;X…

FreeRTOS的任务间通信

文章目录 4 FreeRTOS任务间通信4.1 队列4.1.1 队列的使用4.1.2 队列的创建&#xff0c;删除&#xff0c;复位4.1.3 队列的发送&#xff0c;接收&#xff0c;查询 4.2 邮箱&#xff08;mailbox&#xff09;4.2.1 任务中读写邮箱4.2.2 中断中读写邮箱 4.3 队列集4.3.1 队列集的创…

【哈希表】【字符串】个人练习-Leetcode-1814. Count Nice Pairs in an Array

题目链接&#xff1a;https://leetcode.cn/problems/count-nice-pairs-in-an-array/description/ 题目大意&#xff1a;给出一个数列nums[]&#xff0c;求nice对 ( i , j ) (i, j) (i,j)对数。nice对满足0 < i < j < nums.length和nums[i] rev(nums[j]) nums[j] r…

Vue打包文件dist放在SpringBoot项目下运行(正确实现全过程)

项目开发中&#xff0c;一般我们都会使用SpringBootVue进行前后端开发。 在部署时&#xff0c;会后端启动一个服务&#xff0c;再启动一个nginx&#xff0c;nginx中配置前端打包文件dist进行项目访问。 实际上&#xff0c;我们也可以把打包好的dist目录放在SpringBoot项目下进…

【Android面试八股文】Android 有哪些存储数据的方式?

在Android平台上,有多种方式可以存储数据,每种方式都适合不同类型的数据和使用场景。以下是主要的存储数据方式: SharedPreferences(轻量级数据存储): SharedPreferences是用于存储简单键值对数据的最简单方法,适合存储用户偏好设置、配置信息等。数据以XML文件形式存储…

Os-hackNos

下载地址 https://download.vulnhub.com/hacknos/Os-hackNos-1.ova 环境配置如果出现&#xff0c;扫描不到IP的情况&#xff0c;可以尝试vulnhub靶机检测不到IP地址解决办法_vulnhub靶机扫描不到ip-CSDN博客 信息收集 确定靶机地址&#xff1a; 探测到存活主机192.168.111.…

如何利用AI撰写短文案获客?分享6大平台和3大步骤!

从去年开始&#xff0c;很多大厂都在裁员&#xff0c;原因就是因为AI的火爆&#xff0c;替代了很多机械式的劳动力。以前很多人可以通过机械式的工作来摸鱼&#xff0c;现在AI完成的效率比人工的要高很多倍。 国内好用的AI平台非常多&#xff0c;有时候也可以使用几个AI平台结合…

专业的酱酒鉴评方法及要求

在探讨酱酒鉴评的领域&#xff0c;我们不仅需要关注鉴评的基本方法&#xff0c;还要深入了解品评环境的设置、品酒杯的选择以及品酒员的专业素质。这些因素共同构成了酱酒鉴评的完整体系&#xff0c;确保了鉴评结果的科学性和准确性。 酱酒鉴评的基本方法 酱酒鉴评主要依赖于…

软件设计之Java入门视频(11)

软件设计之Java入门视频(11) 视频教程来自B站尚硅谷&#xff1a; 尚硅谷Java入门视频教程&#xff0c;宋红康java基础视频 相关文件资料&#xff08;百度网盘&#xff09; 提取密码&#xff1a;8op3 idea 下载可以关注 软件管家 公众号 学习内容&#xff1a; 该视频共分为1-7…

STM32学习历程(day2)

GPIO解释 GPIO(General-purpose input/output) 可以配置为八种输入输出模式 引脚电平 0V-3.3V 部分引脚可容忍5v 输出模式可控制端口输出高低电平 用以驱动LED、控制蜂鸣器、模拟通信协议输出时序 输入模式可读取端口的高低电平或电压&#xff0c;用于读取按键输入、外界…

反序列化POP链技术详解

POP&#xff08; Procedure Oriented Programming &#xff09;链是反序列化安全问题中相对比较重要的技术点&#xff0c;相比于其他的反序列化问题&#xff0c;这种漏洞的产生更加难以发现&#xff0c;以及在利用上也比较复杂。 要掌握这个东西首先要先了解面向对象中的几个特…

利用coredump获取程序调用通路

一些前置知识 原文链接&#xff1a;https://blog.csdn.net/tenfyguo/article/details/8159176 一、什么是coredump 我们经常听到大家说到程序core掉了&#xff0c;需要定位解决&#xff0c;这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止&a…

MUNIK解读CMMI-带你认识什么是CMMI

1、什么是CMMI? CMMI是Capability Maturity Model Integration&#xff08;能力成熟度模型集成&#xff09;的简称&#xff0c;用于评估软件开发商的质量和能力。CMMI模型最初为美国国防部创建&#xff0c;后被广泛应用于其他领域&#xff0c;通过一整套过程改进实践&#xf…

uniapp自定义富文本现实组件(支持查看和收起)

废话不多说上代码 CollapseText.vue <template><view v-if"descr"><scroll-view class"collapse-text" :style"{maxHeight: computedMaxHeight}"><!-- <slot></slot> --><rich-text :nodes"descr&q…

【力扣 896】单调数列 C++题解(循环)

如果数组是单调递增或单调递减的&#xff0c;那么它是 单调 的。 如果对于所有 i < j&#xff0c;nums[i] < nums[j]&#xff0c;那么数组 nums 是单调递增的。 如果对于所有 i < j&#xff0c;nums[i]> nums[j]&#xff0c;那么数组 nums 是单调递减的。 当给定…

2-网页请求的原理

网页请求的原理 ​ 网络爬虫请求网页的过程可以理解为用户使用浏览器加载网页的过程&#xff0c;这个过程其实是向Web服务器发送请求的过程&#xff0c;即浏览器向Web服务器发送请求&#xff0c;Web服务器会将响应内容以网页形式返回给浏览器。因此&#xff0c;了解浏览器与We…