gTest_接口流程测试_框架部署文档.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话: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

文档评论(0)

此项为空 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档