linux项目配置单元测试环境和生成覆盖率信息

1.单元测试的意义

单元测试是软件开发中的一种测试方法,用于对软件的最小可测试单元(通常是函数、方法、类等)进行独立且自动化的测试。它的主要目的和用途包括:

1. 确保代码质量和稳定性:

  • 单元测试可以帮助开发人员及时发现代码中的 bug 和错误,确保代码的质量。
  • 通过测试不同的输入和边界情况,可以更全面地验证代码的正确性,提高软件的稳定性和可靠性。

2. 提高代码可维护性:

  • 编写单元测试时,开发人员需要思考如何正确使用和组合代码,这有助于编写更清晰、模块化的代码。
  • 在修改或重构代码时,单元测试可以作为安全网,帮助开发人员快速检查修改是否引入了新的问题。

3. 促进团队协作和沟通:

  • 单元测试作为代码规范的一部分,有助于团队成员之间共享对代码行为的理解。
  • 单元测试可以作为文档,描述函数、方法的预期行为和使用方法。

4. 加速开发流程:

  • 单元测试可以快速地发现代码中的错误,避免了在集成或发布后才发现问题,从而加速开发迭代和发布流程。
  • 自动化的单元测试可以在代码修改后立即运行,快速提供反馈。

5. 支持持续集成(CI)和持续部署(CD):

  • 单元测试是持续集成流程的重要组成部分。它们在每次代码提交后自动运行,确保新代码没有破坏现有功能。
  • 自动化单元测试有助于构建一个可靠的自动化测试套件,支持持续部署流程的自动化决策。

6. 降低维护成本:

  • 在软件开发的早期阶段发现并解决问题,可以大大降低后续维护的成本和风险。
  • 通过覆盖大部分代码,单元测试可以使维护者更加自信地对代码进行修改和优化。

总的来说,单元测试在软件开发中起着至关重要的作用,它不仅是一种测试方法,更是一种良好的编程实践和质量保证手段。通过良好编写的单元测试,可以有效地提高软件的质量、可靠性和可维护性,同时促进团队协作和开发效率。

2. 工具包配置及说明

2.1 安装GCC/G++

如果环境中没有gcc/g++,使用以下命令安装:

sudo apt update

sudo apt install gcc g++

安装完成后查看版本:

2.2 GTest

2.2.1 安装GTest

将压缩包复制入自己主目录中并解压,在终端进入googletest目录中

运行如下命令:

export CC=/usr/bin/gcc

export CXX=/usr/bin/g++

mkdir build && cd build/

cmake -DCMAKE_CXX_FLAGS="-std=c++11" -DBUILD_SHARED_LIBS=ON ../

make 

sudo make install

可以看到/usr/local/lib文件夹下出现了gtest相关的动态库。

确认环境变量中是否已经包含了/usr/local/lib

可以通过编辑主目录下的.bashrc文件修改LD_LIBRARY_PATH环境变量,在最后添加

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

在原本环境变量基础上添加/usr/local/lib目录。

修改保存后运行source ~/.bashrc命令。

2.2.2 GTest组织架构介绍和使用

在 Google Test (GTest) 中,测试用例被组织成一个层次结构,包括 Test Environment、Test Suite 和 Test Case。这些组织架构有助于更好地管理和执行测试。

2.2.2.1 Test Environment(测试环境)

Test Environment 是一个全局的类,它在整个测试过程中为测试提供了一个共享的环境。它主要用于在测试之前和之后执行一些初始化和清理工作,以确保测试的可靠性和一致性。Test Environment 通常通过继承 testing::Environment 类来创建。在 Test Environment 中,你可以重写 SetUp() 和 TearDown() 方法来分别执行在测试开始前和测试结束后需要进行的操作。例如,你可以在 SetUp() 方法中创建共享资源,而在 TearDown() 方法中清理这些资源。

举例:

class MyTestEnvironment : public testing::Environment {
public:
    virtual void SetUp() {

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

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

相关文章

爬虫入门到精通_框架篇13(PySpider框架基本使用及抓取TripAdvisor实战)_PySpider下载安装,项目实战

1 PySpider框架基本用法 PySpider框架: 去重处理PyQuery提取错误重试多进程处理代理简洁JavaScript渲染结果监控WebUI管理 安装PySpider: pip install pyspider报错: 主要是async是python3.7的保留字,pyspider库中的有些文件与之重复而出…

RDB 和 AOF 的实现原理以及优缺点

一个工作了 5 年的粉丝私信我, 关于 RDB 和 AOF 的实现原理 这个问题在面试的时候,应该怎么回答?于是我把之前整理过的一个高手回答整理成文档发给了他,后来他参考这个回复在面试的时候顺利拿到了 offer 今天我把这个文档分享给大…

安卓7原生相机切到视频崩溃

目录 1、查看日志 2、分析日志、提取重点 3、寻找解决方法 author daisy.skye的博客_CSDN博客-嵌入式,Qt,Linux领域博主 daisy.skye_嵌入式,Linux,Qt-CSDN博客daisy.skye擅长嵌入式,Linux,Qt,等方面的知识https://blog.csdn.net/qq_40715266?typeblog 1、查看日志 由于安…

文献学习-13-机器人顶刊IJRR近期国人新作(2024.3)

一、IJRR简介 The International Journal of Robotics Research(IJRR)是机器人领域的高水平学术期刊,专注于发布关于机器人技术和相关领域的最新研究成果。IJRR创刊于1982年,是该领域的第一本学术刊物,2022-2023最新影…

141 Linux 系统编程18 ,线程,线程实现原理,ps –Lf 进程 查看

一 线程概念 什么是线程 LWP:light weight process 轻量级的进程,本质仍是进程(在Linux环境下) 进程:独立地址空间,拥有PCB 线程:有独立的PCB,但没有独立的地址空间(共享) 区别:在于是否共…

echarts中toolbox 中文乱码问题

问题描述 本地引用的echarts源文件,页面其他部分编码显示正常,唯独toolbox鼠标悬停在上面时提示信息显示乱码。 如图所示: 尝试过的方法 使用sublime text 3,notepad,记事本更改文件编码为utf-8引入时,在sc…

使用Portainer让测试环境搭建飞起来

Docker的用处不多加赘述,Docker目前有以下应用场景: 测试:Docker很适合用于测试发布,将 Docker 封装后可以直接提供给测试人员进行运行,不再需要测试人员与运维、开发进行配合,进行环境搭建与部署。 测试…

无人机|LQR控制算法及其无人机控制中的应用仿真

前言 LQR全称Linear Quadratic Regulator(线性二次调节器),顾名思义用于解决形如 x ˙ A x B u y C x D u \begin{aligned}\dot{x}&AxBu\\y&CxDu\end{aligned} x˙y​AxBuCxDu​ 线性时不变系统的一种线性控制方法,…

动态代理详解

动态代理 一、JDK动态代理二、CGLIB动态代理三、Javassist动态代理技术 在程序运行阶段,在内存中动态生成代理类,被称为动态代理,目的是为了减少代理类的数量。解决代码复用的问题。 一、JDK动态代理 DK动态代理技术:只能代理接口…

网络安全防御保护 Day7

1.因为FW1和FW2已处于双机热备状态,所以只需要对主设备进行配置即可。进入FW1的配置界面,选择“网络”界面,点击“IPsec”,进行IPsec通道的基本配置,这里选择的是“电信”链路。 2.完成上述配置后,进行待加…

Linux——基础IO

目录 前言 C语言文件操作 stdin & stdout & stderr 系统文件IO open close write read 文件描述符fd 重定向 dup2 Linux下一切皆文件 缓冲区 简易缓冲区 文件系统 磁盘 创建文件 删除文件 查看文件 软硬链接 软链接 硬链接 动静态库 静态库 …

网络安全: Kali Linux 使用 hping3 阻塞目标主机

目录 一、实验 1.环境 2. 物理机测试远程连接 Windows server 3.Kali Linux 使⽤ hping3 ⼯具 二、问题 1. 常见的 DoS ⽅式有哪些 2.hping3 测试⼯具的命令格式和选项参数 一、实验 1.环境 (1)主机 表1 主机 系统版本IP备注Kali Linux2024.…