C++单元测试框架(gtest).PDF

原创:/coderzh/ 整理: 玩转 Google 开源 C++单元测试框架 Google Test 系列(gtest)之一 - 初识 gtest 玩转 Google 开源 C++单元测试框架 Google Test 系列(gtest)之一 - 初识 gtest 玩玩转转GGooooggllee开开源源 CC++++单单元元测测试试框框架架GGooooggllee TTeesstt系系列列((ggtteesstt))之之一一 -- 初初识识ggtteesstt 一、前言 一、前言 一一、、前前言言 本篇将介绍一些 gtest 的基本使用,包括下载,安装,编译,建立我们第一个测试Demo 工程,以及编写一个最简单的测试案例。 二、下载 二、下载 二二、、下下载载 如果不记得网址,直接在 google 里搜 gtest,第一个就是。目前 gtest 的最新版本为1.3.0, 从下列地址可以下载到该最新版本: /files/gtest-1.3.0.zip /files/gtest-1.3.0.tar.gz /files/gtest-1.3.0.tar.bz2 三、编译 三、编译 三三、、编编译译 下载解压后, 里面有个 msvc 目录: 使用 VS 的同学可以直接打开 msvc 里面的工程文件, 如果你在使用的是 VS2005或是 VS2008,打开后会提示你升级,升完级后,我们直接编译里面的“gtest”工程,可以直接 编过的。 这里要提醒一下的是,如果你升级为 VS2008的工程,那么你的测试 Demo 最好也是 VS2008工程,不然你会发现很郁闷,你的 Demo 怎么也编不过,我也曾折腾了好久,当时 我升级为了 VS2008工程,结果我使用 VS2005工程建 Demo,死活编不过。(这里有人误 解了,并不是说只能在 VS2008中编译,在 VS2005中同样可以。如果要编译 VS2005版本, 最好保证 gtest 和你的测试工程都使用 VS2005工程。) 编译之后,在 msvc 里面的 Debug 或是 Release 目录里看到编译出来的 gtestd.lib 或是 gtest.lib 文件。 四、第一个 Demo 四、第一个 Demo 四四、、第第一一个个DDeemmoo 下面我们开始建立我们的第一个 Demo 了,假如之前使用的 VS2008编译的 gtest,那么, 我们在 VS2008中,新建一个 Win32 Console Application。接着就是设置工程属性,总 结如下: 1.设置 gtest 头文件路径 2.设置 gtest.lib 路径 3.Runtime Library 设置 如果是 Release 版本,Runtime Library 设为/MT。当然,其实你也可以选择动态链接 (/MD),前提是你之前编译的 gtest 也使用了同样是/MD 选项。 工程设置后了后,我们来编写一个最简单测试案例试试,我们先来写一个被测试函数: int Foo(int a, int b) { if (a == 0 || b == 0) { throw dont do that; } int c = a % b; if (c == 0) return b; return Foo(b, c); } 没错,上面的函数是用来求最大公约数的。下面我们就来编写一个简单的测试案例。 #include gtest/gtest.h TEST(FooTest, HandleNoneZeroInput) { EXPECT_EQ(2, Foo(4, 10)); EXPECT_EQ(6, Foo(30, 18)); } 上面可以看到,编写一个测试案例是多么的简单。 我们使用了 TEST 这个宏,它有两个参 数,官方的对这两个参数的解释为:[TestCaseName,TestName],而我对这两个参数的 定义是:[TestSuiteName,TestCaseName],在下一篇我们再来看为什么这样定义。 对检查点的检查,我们上面使用到了 EXPECT_EQ 这个宏,这个宏用来比较两个数字是否相 等。Google 还包装了一系列 EXPECT_* 和 ASSERT_*的宏,而 EXPECT 系列和 ASSERT 系 列的区别是: 1. EXPECT_* 失败时,案例继续往下执行。 2. ASSERT_* 失败时,直接在当前函数中返回,当前函数中 ASSERT_*后面的语句将不 会执行。 在下一篇,我们

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档