没有合适的资源?快使用搜索试试~ 我知道了~
首页玩转Google开源C++单元测试框架Google Test系列.pdf
资源详情
资源评论
资源推荐
玩转 Google 开源 C++单元测试框架 Google Test 系列(gtest) 覆盖接入软件 1 室
1
玩转 Google 开源 C++单元测试框架 Google Test 系列(gtest)
1.玩转 Google 开源 C++单元测试框架 Google Test 系列(gtest)之一 - 初识 gtest
2.玩转 Google 开源 C++单元测试框架 Google Test 系列(gtest)之二 - 断言
3.玩转 Google 开源 C++单元测试框架 Google Test 系列(gtest)之三 - 事件机制
4.玩转 Google 开源 C++单元测试框架 Google Test 系列(gtest)之四 - 参数化
5.玩转 Google 开源 C++单元测试框架 Google Test 系列(gtest)之五 - 死亡测试
6.玩转 Google 开源 C++单元测试框架 Google Test 系列(gtest)之六 - 运行参数
7.玩转 Google 开源 C++单元测试框架 Google Test 系列(gtest)之七 - 深入解析 gtest
8.玩转 Google 开源 C++单元测试框架 Google Test 系列(gtest)之八 - 打造自己的单元测试框架
玩转 Google 开源 C++单元测试框架 Google Test 系列(gtest)之一 - 初识 gtest
一、前言
本篇将介绍一些 gtest 的基本使用,包括下载,安装,编译,建立我们第一个测试 Demo 工程,以及编写一个最简单的测试案例。
二、下载
如果不记得网址, 直接在 google 里搜 gtest,第一个就是。目前 gtest 的最新版本为 1.3.0,从下列地址可以下载到该最新版本:
http://googletest.googlecode.com/files/gtest-1.3.0.zip
http://googletest.googlecode.com/files/gtest-1.3.0.tar.gz
http://googletest.googlecode.com/files/gtest-1.3.0.tar.bz2
三、编译
下载解压后, 里面有个 msvc 目录:
玩转 Google 开源 C++单元测试框架 Google Test 系列(gtest) 覆盖接入软件 1 室
2
使用 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 了,假如之前使用的 VS2008 编译的 gtest,那么,我们在 VS2008 中,新建一个 Win32 Console Application。接着就是设置工程
属性,总结如下:
1.设置 gtest 头文件路径
玩转 Google 开源 C++单元测试框架 Google Test 系列(gtest) 覆盖接入软件 1 室
3
2.设置 gtest.lib 路径
3.Runtime Library 设置
玩转 Google 开源 C++单元测试框架 Google Test 系列(gtest) 覆盖接入软件 1 室
4
如果是 Release 版本,Runtime Library 设为/MT。当然,其实你也可以选择动态链接(/MD),前提是你之前编译的 gtest 也使用了同样是/MD 选项。
工程设置后了后,我们来编写一个最简单测试案例试试,我们先来写一个被测试函数:
int Foo(int a, int b)
{
if (a == 0 || b == 0)
{
throw "don't do that";
}
int c = a % b;
if (c == 0)
return b;
return Foo(b, c);
}
没错,上面的函数是用来求最大公约数的。下面我们就来编写一个简单的测试案例。
玩转 Google 开源 C++单元测试框架 Google Test 系列(gtest) 覆盖接入软件 1 室
5
#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_*后面的语句将不会执行。
在下一篇,我们再来具体讨论这些断言宏。为了让我们的案例运行起来,我们还需要在 main 函数中添加如下代码:
int _tmain(int argc, _TCHAR* argv[])
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
“testing::InitGoogleTest(&argc, argv);” :gtest 的测试案例允许接收一系列的命令行参数,因此,我们将命令行参数传递给 gtest,进行一些初始化操作。gtest
的命令行参数非常丰富,在后面我们也会详细了解到。
“RUN_ALL_TESTS()” :运行所有测试案例
OK,一切就绪了,我们直接运行案例试试(一片绿色,非常爽):
剩余62页未读,继续阅读
parjing
- 粉丝: 16
- 资源: 19
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0