自动驾驶(五十)---------Gtest测试

       本文将介绍单元测试工具Google Test(GTest)在Linux操作系统中测试环境的搭建方法。本文属于Google Test使用的基础教程。在Linux中使用Google Test之前,需要对如下知识有一些了解:

  1.  C/C++编程方法
  2.  makefile的编写
  3.  Linux命令行操作
  4.  GTEST背景知识:它是用来干什么的?它用什么语言编写的?它的一些基本语法?等等

       以上知识不需要做到熟能生巧,只要达到入门级别,使用GTEST不会费任何力气,毕竟GTEST也不是一个高门槛的工具。言归正传,我们来按照步骤逐一讲解:

1:下载GTEST

       下载链接为:https://code.google.com/p/googletest/downloads/list

       目前GTEST的最新版本为gtest-1.7.0.zip,因此我们在本文中将以这个版本作为例子讲解。

2:认识文件夹

      下载并解压之后,就可以看到gtest-1.7.0文件夹了,里面的内容如下图所示

             

        这么多文件乍一看确实有点让人摸不到头脑。其实,GTEST提供了对于多个不同平台的支持,例如msvc文件夹是用在微软Visual Studio中,xcode文件夹是用于Mac Xcode,codegrear文件夹是用于Borland C++ Builder,在Linux环境中,我们用的内容就是make文件夹了。

3:清除不需要的文件

      前一步中我们已经讲到,很多文件是为了支持不同平台的,为了保持程序的简洁,避免混淆试听,我们在这一步把所有不需要的文件全部删除,只保留我们需要的。其实我们只需要4个文件夹,如下图所示。

           

      其余的文件以及文件夹全部删除(这一步并不是必须,但对于我们有洁癖的程序员来讲,容不得一堆不用的代码放在那~)。

       好了,只剩下了四个文件夹,看上去是不是清爽了很多?其实打开make文件夹,你会发现里面只有一个Makefile文件。查看Makefile文件内容,得知这是系统给出的编译samples文件夹中的第一个sample的命令。但是打开sample文件夹,又看到里面一大坨源文件。在本入门教程中,我们先不考虑那些复杂的例子。因此,打开samples文件夹,开始删文件,删到只剩下如图所示的三个文件为止。

        我们的程序越来越清爽了^_^。

4:改写Makefile文件

       此时如果你到make文件夹下,通过命令行执行 $ make && ./sample1_unittest 命令,可以看到测试的执行结果。不过如果打开Makefile查看一下,就会发现这个makefile只适用于编译sample1,如果我再增加一个被测的源文件呢?又要重新写makefile,太麻烦了。于是,在这一步,我们改写一下Makefile。上一步我们讲到,现在只剩下4个文件夹(include,make,samples,src),既然make里面的唯一一个文件也要被改写,那也没必要留这个文件夹了。于是,在Step 4,你要做的第一件事情就是,把make文件夹,连同里面的Makefile文件全部删除……然后,进入samples文件夹,自己创建一个文件,名为Makefile,如图所示:

        然后,打开Makefile文件,写入以下内容,如图所示(不要把图中的行号也写进去哦~)。这个新的Makefile是由刚才被我们删除的Makefile改写而来的,如果你好奇的话可以比较一下它们之间的差别,里面涉及到一些makefile的语法和函数,如果不熟的话,你可能需要花费几分钟查一下资料去了解他们。

       注意下图中改写的Makefile第32行,我们编译的是后缀名为cpp的文件,而原来给的例子却以cc结尾。因此,你还要做一件事情,就是把sample1.cc的文件名改为sample1.cpp,把sample1_unittest.cc的文件名改为sample1_unittest.cpp,就大功告成了。

                                

        现在我们的文件夹有三个(include,src,samples),我们自己被测的程序放在sample文件夹中。这个文件夹的名字看着也比较不爽,你可以把它改为mycode或者testcode,然后GTEST根目录的文件夹名称gtest-1.7.0也可以改为mygtest之类,用以满足我们完美主义者的需求。如图所示:

       现在,进入命令行进行编译执行操作: $ make && ./run_test,就可以看到结果了,如图所示:

                                        

5:添加自己的测试函数

      到上面一步,其实我们的测试环境已经搭建完成。如果你现在有一个函数想要被测试一下,可以继续阅读Step 5。假设我们现在有一个待测函数sqrt.cpp以及它的头文件sqrt.h,他们的内容如下:

(sqrt.cpp)          

(sqrt.h)              

(sqrt_unittest.cpp)

      这个被测文件的作用是计算任意一个正整数的平方根,算法复杂度在log(n)级别。将以上三个文件放在mycode文件夹中,然后 make && ./run_test进行编译运行,就可以看到结果了:

                   

       总结:环境搭建完成之后,每次测试一个文件xxx.cpp以及它的xxx.h文件,就把这俩放入mycode文件夹,然后编写xxx_unittest.cpp测试文件,也放进去。然后到这个目录下用命令行 make && ./run_test就可以了,应该比最开使的时候方便了许多吧?要测试时,我们只需要三个文件放入mycode,然后命令行进入这个目录 make && ./run_test 即可完成测试。下面的图就是我现在的mycode文件夹了。xxx_unittest.cpp这个文件名并不是固定,取成别的也无所谓,只是这样更容易辨认哪一个文件是在测哪个函数而已。

                          

      当然,Google Test是一个非常强大的工具,以上所讲解的只是使用了它最最基本的功能,以及一个简单环境的搭建。其实需要用的文件就是Step 4中提到的那剩下的三个文件夹内容,进行适当的改写,就可以实现更加强大的功能。这些等到以后有机会再写啦。

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

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

相关文章

BEV感知:BEVDet

自动驾驶:BEVDet IntroductionMethodoloData AugmentationNetwork StructureScale-NMS 实验 Introduction 作者通过现有的算法(LSS)、独特的数据增强方案与新的NMS方案整合了一个BEV框架(BEVDet)。 如下图&#xff1a…

【自动驾驶】高级辅助驾驶系统与车联网

【自动驾驶】高级辅助驾驶系统与车联网 Note:本文是对刘春晖教授的 高级辅助驾驶系统与车联网(上),高级辅助驾驶系统与车联网(下) 论文进行排版整理,由于论文中插图较多,并没有全部整理进来,用能力的小伙伴请看原文 文…

自动驾驶技术

高精地图(HD Maps):支持其他模块 定位(Localization):讨论汽车如何确定他所处的位置,汽车利用激光和雷达数据,将这些传感器感知内容与高分辨地图进行对比,这种对比使得汽…

自动驾驶仿真软件简介----CARLAGazeboLGSVLOthers

CARLA CARLA 是一个开源模拟器,它使自主驾驶研究领域平民化。模拟器是开源的,是基于虚幻引擎开发的。它是一个模块化和灵活的工具,配备了强大的API来支持ADAS系统的培训和验证。因此,CARLA试图满足ADAS各种用例的要求&#xff0c…

自动驾驶概述

自动驾驶概述 邱辉俊(少隆) 高德技术 2021-09-28 11:37 导读 汽车行业处在一个变革的时代,自动驾驶相关技术发展应用如火如荼。关注或者想了解这个领域的人也越来越多。本文的目标在于帮助大家对自动驾驶技术有一个全局的基础认识。文章分别…

Google 悄悄更新:你发布的内容都将被用于 AI 训练

世上没有绝对的垃圾,只有放错位置的资源。在数字原住民的 Z 世代的口口相传中,「互联网时代 99%的公开信息都是垃圾」的粗略定义早已见怪不怪了,而有趣的是,彼之砒霜,我之蜜糖,以 Google 为代表的 AI巨头却…

文案智能改写-AI智能文章改写软件

随着人工智能技术的不断发展,越来越多的智能写作软件相继面世,其中,AI智能改写工具是一款非常有实用价值的工具。本文将从全自动批量改写、没有错别字和标准语法、支持图文模式改写、支持各种语言改写以及严格按照标准格式结构改写几个方面&a…

AIGC产生内容的版权到底归属于谁?

随着ChatGPT的火热,AIGC(人工智能生成内容)产生的内容越来越被大众使用,但是,有一个问题一直困扰着大家,包括放牛娃。那就是:AIGC产生的内容,有版权吗?版权到底归属于谁&…

33款可用来抓数据的开源爬虫软件工具

要玩大数据,没有数据怎么玩?这里推荐一些33款开源爬虫软件给大家。 爬虫,即网络爬虫,是一种自动获取网页内容的程序。是搜索引擎的重要组成部分,因此搜索引擎优化很大程度上就是针对爬虫而做出的优化。 网络爬虫是一个…

IntelliJ IDEA,真有你的!

因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享 点击关注#互联网架构师公众号,领取架构师全套资料 都在这里 0、2T架构师学习资料干货分 上一篇:ChatGPT研究框架(80页PPT,附下载)…

盘点一个Jupyter显示的细节问题

点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 弦弦掩抑声声思,似诉平生不得志。 大家好,我是皮皮。 一、前言 前几天在Python白银群【小王子】问了一个Python基础的问题&…

5.1劳动节,Cocos社区年度精品大盘点!幸运抽奖,周边好礼送送送~

Cocos 引擎的生态建设与繁荣,离不开社区开发者的辛勤付出。 2022.5 ~ 2023.5 年度期间,有这样一批 Cocos 社区开发者,他们使用 Cocos Creaor 引擎创作内容与产品、分享技术和经验,为 Cocos 社区默默贡献自己的一份力量&#xff0c…

5.1劳动节,致敬最可爱的人!Cocos社区杰出贡献者出炉

Cocos 引擎的生态建设与繁荣,离不开社区开发者的辛勤付出。 2022.5 ~ 2023.5 年度期间,有这样一批 Cocos 社区开发者,他们使用 Cocos Creaor 引擎创作内容与产品、分享技术和经验,为 Cocos 社区默默贡献自己的一份力量&#xff0c…

都说今年高考作文很难?AI花5秒写了几篇,专家给满分,引爆全网热议!

来源 | 浙江新闻 每一年高考作文题目公布起 社交网络上就会掀起 “一年一度高考作文写作大赛” 今年,浙江语文采用新课标I卷 作文题目与“故事”有关 我们分别请ChatGPT、 文心一言、通义千问等大模型 来写了写今年的高考作文 ↓↓↓ ChatGPT 故事的力量&am…

AI聊天机器人,你更爱哪个?

嗨,各位同学,最近这几个人工智能助手可是火得很啊! 叮咚~AI哥们儿ChatGPT已经很强了,轻松应对各种问题,文笔挺不错的! 咻~Anthropic公司的Claude也很给力,聊天能力十分强大! 嗖~Google新出的Bard看着也很厉害,刚一出世就引起不小轰动! 面对这三个AI大佬,我们该如何抉择呢?今天…

浅尝ChatGPT使用之Python字典嵌套排序

一、背景 所负责的项目从v1.0升级到v2.0之后,发送到kafka的Json数据字段顺序和内容有所改变, v1.0版本推送数据样例: {"name": "小王子","author": "安托万德圣-埃克苏佩里(1900-1944&#…

Smart Client 高级开发(微软讲座下载)

出处: http://www.microsoft.com/china/msdn/events/featureevents/2004/SmartClientSeminar/index.aspx 经过设计,智能客户端应用程序可以将胖客户端应用程序的优点与瘦客户端应用程序的部署和可管理性优点结合起来,然而,要完全实现智能客户…

一文读懂微软转型秘诀

关注ITValue,看企业级最新鲜、最价值报道! 新眸出品 作者|叶静 编辑|桑明强 微软一直在试图转化新的角色。 相较云服务、生产力和个人计算三驾主力马车,游戏业务对微软的营收贡献并不大,但年初以687亿美元全…

Adtributor: Revenue Debugging in Advertising Systems 微软论文翻译

前言 毕设在做异常点检测与根因分析,就拿微软14年的文章作为主要参考文献了,这里把中文的翻译以及一些整理一起放在博客里,以作分享交流。 Adtributor: 广告系统中的收入调试 作者:Ranjita Bhagwan, Rahul Kumar, Ramachandran…

一起谈.NET技术,微软 Share Point 2010 企业应用解决方案

SharePoint 2010功能及改进 SharePoint 2010分为两个版本SharePoint Foundation 2010和SharePoint Server 2010,其中SharePoint Foundation 2010是WSS 3.0的升级,而SharePoint Server 2010则是MOSS 2007的升级(文中如无特别说明则SharePoint 2010是二者统…