- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
gTest测试框架的部署gTest简介1、 gtest框架结构gtest使用了xUnit的框架,xUnit的框架的公共的特点是包含了一下几个元素:test case:测试用例集test:测试用例test fixture:构造测试用例的公共前提条件或状态test setup:构造测试的前提条件或状态test teardown:还原到测试执行前的状态assertion:断言,用于检查2、gtest的源代码结构如下图简单说一下目录结构:msvc是针对visual studio创建的gtest的工程文件,make文件夹下是针对linux的Makefile,xcode和codegear不用解释了。script文件夹下是一些脚本用于产生测试用例的,test下是测试gtest框架本身的一些代码。其中源代码包含在include、src两个文件夹中着重看一下src文件夹中的这些源文件。gtest.cc文件实现了gtest的框架和对外接口gtest_main.cc定义的main函数gtest-all.cc包含了所有源文件gtest-death-test.cc实现了死亡测试相关的内容gtest-filepath.ccgtest-port.cc定义了一写平台移植相关的内容gtest-printers.ccgtest-test-part.ccgtest-typed-test.cc定义了参数化测试的内容gtest-internal-inl.h是gtest内部使用的,用户不应该包含该头文件,否则会编译出错3、gtest的主要函数介绍1)main函数我们看代码一般习惯从main函数开始入手,我们就先从main函数说起吧,gtest为我们提供标准的main函数,在src/gtest_main.cc文件中,内容如下。12345678910#include stdio.h?#include gtest/gtest.h?GTEST_API_ int?main(int?argc, char?**argv){?printf(Running main() from gtest_main.cc\n);?testing::InitGoogleTest(argc, argv);?return?RUN_ALL_TESTS();}这是一个非常简单的main函数,先看库文件,gtest.h库文件定义了gtest向外提供的所有API,这个库中包括两个命名空间testing:包含了开放给用户使用的API。testing::internal:定义了gtest的一些内部实现。2) InitGoogleTest函数InitGoogleTest()函数是gtest对外提供的一个接口函数,里面封装了一个内部的实现,代码很简单1234void?InitGoogleTest(int?*argc, char?**argv){?internal::InitGoogleTestImpl(argc, argv);}InitGoogleTestImpl()是定义在internal中的实现,注意gtest中很多地方使用了这样的形式,对外接口只是简单的封装,具体实现在internal中。这样做的好处也是明显的,对外提供统一稳定的接口,即使内部实现产生大的变动时,也不会影响到建立在gtest框架上的程序的编译和执行。InitGoogleTest()的主要功能是完成参数的解析和创建一个UnitTest的实例,关于UnitTest将在后面讲到。并且InitGoogleTest()在一个程序中只能调用一遍,因为在internal里定义了一个全局变量来计数InitGoogleTest()运行的次数,运行InitGoogleTest()时会先检查这个变量,超过1则直接返回。3) InitGoogleTestImpl函数InitGoogleTestImpl()方法中定义了初始化共做主要代码如下:12345678910111213141516171819202122232425template?typename?CharTypevoid?InitGoogleTestImpl(int?*argc, CharType **argv){?g_init_gtest_count++;??// We dont want to run the initialization code twice.?if?(g_init_gtest_count != 1) return;??if?(*argc = 0) return;??internal::g_executable_path = internal::StreamableToString(argv[0]);?#if GTEST_HAS_DEATH_TEST??g_argvs.clear();?for
您可能关注的文档
最近下载
- 个人简历——【标准模板】.doc VIP
- 广西理工职业技术学院毕业设计(论文)撰写规范及要求.docx VIP
- 2024年广东省广州市中考历史真题试卷(含答案).docx VIP
- 人教版高中生物同步新教材课本习题答案(共5册).pdf VIP
- GB∕T 19072-2010风力发电机组 塔架.pdf
- 八年级道德与法治5.2诚实守信(教学设计).docx VIP
- 2025年最新领导干部政治理论知识考试题库(含答案).docx VIP
- 2021年中质协六西格玛黑带真题.pdf VIP
- 《我的青春启航啦》教学课件-2024-2025学年桂美版(2024)初中美术七年级下册.pptx VIP
- 《苏幕遮(碧云天)》课件-【中职专用】高一语文同步精品课堂(高教版2023·基础模块下册).pptx VIP
文档评论(0)