Google Test 使用笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhougb3/article/details/82055771

在 visual studio 2015 上使用

下载:https://github.com/google/googletest (压缩包)
编译gtest
  1. 使用VS2015打开gtest.sln(我的是在目录googletest-master\googletest\msvc\2010下)

  2. 在debug、release两个模式下都编译一下。编译后,在msvc/gtest/下有debug、release两个文件夹。(编译器报“不是有效的Win32应用程序”是正常现象)

创建测试项目
  1. 创建具体项目,之后右击工程名,点击“属性”,展开“配置属性——C/C++——常规”,在“附加包含目录”中添加“.\googletest-master\googletest\include”(省略部分为你下载时文件夹所放的路径, 即include目录的绝对路径);

  2. 展开“C/C++——代码生成”,在“运行库”中进行修改,这里的值应该和编译gtest时使用的值一致即可。

  3. 展开“链接器——输入”,在“附加依赖项”中添加编译gtest时生成的gtestd.lib,附加上正确的路径;

  4. 之后就可以编写你的第一个测试程序了。

有问题参考:

VS2015搭建GoogleTest框架–配置第一个项目

VS2015搭建GoogleTest框架–配置第一个项目


使用

断言

对检查点的检查:

1. EXPECT_*  失败时,案例继续往下执行。

2. ASSERT_* 失败时,直接在当前函数中返回,当前函数中ASSERT_*后面的语句将不会执行。 
事件机制

gtest提供了多种事件机制,非常方便我们在案例之前或之后做一些操作。总结一下gtest的事件一共有3种:

  1. 全局的,所有案例执行前后。

  2. TestSuite级别的,在某一批案例中第一个案例前,最后一个案例执行后。(应该是一个testcase对象执行前后执行)

  3. TestCase级别的,每个TestCase前后。(应该是一个testcase对象中每个test对象的执行前后执行)

通过继承Test类,使用TEST_F宏,我们可以在案例之间共享一些通用方法,共享资源。使得我们的案例更加的简洁,清晰。

参数化

不用指定每个特殊值

死亡测试

测试程序是否会在某些输入的条件下如期挂了

运行参数
深入解析gtest

总结一下gtest里的几个关键的对象:

  1. UnitTest 单例,总管整个测试,包括测试环境信息,当前执行状态等等。

  2. UnitTestImpl UnitTest内部具体功能的实现者。

  3. Test 我们自己编写的,或通过TEST,TEST_F等宏展开后的Test对象,管理着测试案例的前后事件,具体的执行代码TestBody。

  4. TestCase 测试案例对象,管理着基于TestCase的前后事件,管理内部多个TestInfo。

  5. TestInfo 管理着测试案例的基本信息,包括Test对象的创建方法。

  6. TestInfoImpl TestInfo内部具体功能的实现者 。

使用一个链表结构存储TestCase对象。

参考:玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest

猜你喜欢

转载自blog.csdn.net/zhougb3/article/details/82055771