Gtest 测试指导 入门基础(A)
Table of Contents
• 1 Gtest的基本使用,包括下载,安装,编译。
o 1.1 下载
o 1.2 编译
1.2.1 Gtest静态库的编译
1.2.2 Gtest在VS中的编译
• 2 在项目中配置Gtest
o 2.1 Gtest在非VS环境下的配置
o 2.2 Gtest在VS环境下的配置
• 3 Gtest的使用
o 3.1 Makefile
o 3.2 构建代码
o 3.3 Gtest断言的使用
o 3.4 Gtest的异常检查
o 3.5 Gtest的事件机制
o 3.6 Gtest的参数化
o 3.7 Gtest的死亡测试
3.7.1 *_DEATH(statement, regex)
3.7.2 *_EXIT(statement, predicate, regex)
3.7.3 死亡测试运行方式
3.7.4 死亡测试的注意事项
o 3.8 Gtest的运行参数
• 4 作业
o 4.1 编写一个DemoContainer类,按以下接口要求实现:
• 5 参考文献
1 Gtest的基本使用,包括下载,安装,编译。
1.1 下载
直接在google中搜索gtest,第一个就是。也可以从下面地址下载gtest。
https://code.google.com/p/googletest/downloads/
1.2 编译
1.2.1 Gtest静态库的编译
在下载解压后,假设你把gtest源码放在/usr/src/gtest
GTEST_DIR=/usr/src/gtest
设置完GTEST_DIR之后,执行下列的命令
g++ -I G T E S T D I R / i n c l u d e − I {GTEST_DIR}/include -I GTESTDIR/include−I{GTEST_DIR} -c ${GTEST_DIR}/src/gtest-all.cc
ar -rv libgtest.a gtest-all.o
来生成libgtest.a。
1.2.2 Gtest在VS中的编译
下载解压后,里面有个msvc目录,使用VS的同学可以直接的打开msvc里面的工 程文件,打开后会提示你升级,升级后,我们直接编译里面的“gtest”工程, 可以直接编过去的。最好是编译Debug和Relese两个版本。
这里需要注意的是:如果你升级gtest是在VS2008中升级,那么你要使用 gtest 进行测试的demo最好也是VS2008工程,不然你会发现很郁闷,你的 demo怎么也编不过。
如果你编译了Debug和Relese两个版本之后,在msvc里面就有两个文件夹 Debug和Release,这两个目录中能看到编译出来的gtestd.lib或gtest.lib文 件。
2 在项目中配置Gtest
2.1 Gtest在非VS环境下的配置
- 把已经生成的libgtest.a放在自己定义的lib中,如 h:/work/myGtest/lib.
- 把Gtest需要的头文件放在租户定义的头文件中,如: h:/work/myGtest/include(头文件只需要从Gtest源码中直接copy就可以了)
2.2 Gtest在VS环境下的配置
假设我们是用VS2010对gtest进行的编译,那么我们的这个例子也要在VS2010 中建立。
创建我们要测试的Demo,在VS2010中创建一个空项目,命名为GtestMoney。 接下来为GtestMoney项目配置gtest环境。 - 设置gtest头文件路径: 项目 - 属性 - VC++目录 - 包含目录 - 编辑:在 这里添加你的gtest\include 例如我包含目录是: D:\SoftWare\gtest-1.7.0\gtest-1.7.0\include
- 设置gtest.lib路径: 项目 - 属性 - 链接器 - 输入 - 附加依赖项: 这里添加的你gtestd.lib/gtest.lib(Debug编译模式用 gtestd.lib,Relese编译用gtest.lib).例如我的附件依赖项是: D:\SoftWare\gtest-1.7.0\gtest-1.7.0\msvc\gtest\Debug\gtestd.lib
- Runtime Library设置: 项目 - 属性 - C/C++ - 代码生成器 - 运行库 选择 “多线程调试(/MTD)”。注意:如果Demo和gtest编译用的都是 Relese版本,Runtime Library 设置为"/MT". 当然你可以选择动态链接 (/MD),前提是你之前编译的gtest也同样使用了/MD选项。
3 Gtest的使用
下面将介绍在非VS环境下如何使用Gtest,我们将要用一个money的例子来展开 对Gtest的学习。
3.1 Makefile
一般的项目要有一个头文件一个cpp文件还有一个测试文件,我们分别命名为 Money.h, Money.cpp和MoneyTest.cpp.因为我们要使用到Gtest,所以添加一 个Makefile来连接Gtest到我们的工程中。Makefile的内容如下。
Should change to your path which contain libgtest.a
GTEST_DIR=H:/work/myGtest
The dirtory which contain Money.h, Money.cpp, MoneyTest and Makefile
SRC_DIR=/cygdrive/h/work/Sample
LDFLAGS += -L ( G T E S T D I R ) / l i b − l g t e s t − l p t h r e a d C X X F L A G S + = − c − g − W a l l − W e x t r a − I (GTEST_DIR)/lib -lgtest -lpthread CXXFLAGS += -c -g -Wall -Wextra -I (GTESTDIR)/lib−lgtest−