Linux c++ 测试框架 gtest使用简介
2014-09-01 16:16
459 查看
(0)gtest是什么
gtest是一个跨平台的C++测试框架,google作品。
它支持自动发现测试,断言集,用户定义的断言,death测试,致命与非致命的失败,类型参数化测试,各类运行测试的选项和XML的测试报告。
(1)下载gtest
地址:
http://code.google.com/p/googletest/downloads/list
笔者下载的版本是1.6.0
http://googletest.googlecode.com/files/gtest-1.6.0.zip
(2)安装gtest
?
确认lib目录下生成了libgtest.a和libgtest_main.a,
这两个库是后续测试程序需要链接的库。
(3)测试gtest
不妨设我们需要测试foo.h中的一个max函数(求两个数中较大的一个)
foo.h文件内如如下:
?
撰写测试程序foo_test.cpp来对foo进行测试:
foo_test.cpp文件内如如下:
?
编译foo_test.cpp,编译命令如下:
?
需要注意的是,要链接pthread这个库。
执行结果如下:
[==========] Running 1 test from 1 test case.
[==========] Global test environment set-up.
[==========] 1 test from foo
[ RUN ] foo.max
[ OK ] foo.max (0 ms)
[==========] 1 test from foo (0 ms total)
[==========] Global test environment tear-down
[==========] 1 test from 1 test case ran. (0 ms total)
[ PASSED ] 1 test.
(4)简要说明
?
这是要执行的测试用例,后面是执行内容
name1:测试用例名称
name2:测试名称
这两个参数都只起到提示作用,我们也可以这么使用
name1:类名
name2:方法名
或者
name1:文件名
name2:函数名
EXPECT_EQ(value1, value2);
用例执行成功时,期望value1和value2是相等的,相等才算通过测试,如上例中的:
EXPECT_EQ(2, max(2,-1));
max(2, -1)的执行结果值期望是2如果不等,则用例运行失败。
?
这个是main函数,InitGoogleTest会初始化一些环境变量,RUN_ALL_TESTS()会调用所有的TEST(name1, name2)
(6)结束语
想了解更详细的关于gtest的信息,见官网:
http://code.google.com/p/googletest
SConstruct:
env = Environment(CCFLAGS = '-g')
#gtest库
gtestFile = [ 'src/gtest-all.cc']
gmainFile = [ 'src/gtest_main.cc']
#testfile
testFile = [ 'src/foo_test.cpp' ]
includePath = [ 'include' ]
libPath = [ 'lib', '/usr/local/lib','usr/lib64' ]
libs = [ 'pthread','gtest','gtest_main']
StaticLibrary('lib/gtest',source=gtestFile,CPPPATH=includePath)
StaticLibrary('lib/gtest_main',source=gmainFile,CPPPATH=includePath)
env.Program( 'test',source=testFile,CPPPATH=includePath,LIBS=libs,LIBPATH=libPath)
gtest是一个跨平台的C++测试框架,google作品。
它支持自动发现测试,断言集,用户定义的断言,death测试,致命与非致命的失败,类型参数化测试,各类运行测试的选项和XML的测试报告。
(1)下载gtest
地址:
http://code.google.com/p/googletest/downloads/list
笔者下载的版本是1.6.0
http://googletest.googlecode.com/files/gtest-1.6.0.zip
(2)安装gtest
?
这两个库是后续测试程序需要链接的库。
(3)测试gtest
不妨设我们需要测试foo.h中的一个max函数(求两个数中较大的一个)
foo.h文件内如如下:
?
foo_test.cpp文件内如如下:
?
?
执行结果如下:
[==========] Running 1 test from 1 test case.
[==========] Global test environment set-up.
[==========] 1 test from foo
[ RUN ] foo.max
[ OK ] foo.max (0 ms)
[==========] 1 test from foo (0 ms total)
[==========] Global test environment tear-down
[==========] 1 test from 1 test case ran. (0 ms total)
[ PASSED ] 1 test.
(4)简要说明
?
name1:测试用例名称
name2:测试名称
这两个参数都只起到提示作用,我们也可以这么使用
name1:类名
name2:方法名
或者
name1:文件名
name2:函数名
EXPECT_EQ(value1, value2);
用例执行成功时,期望value1和value2是相等的,相等才算通过测试,如上例中的:
EXPECT_EQ(2, max(2,-1));
max(2, -1)的执行结果值期望是2如果不等,则用例运行失败。
?
(6)结束语
想了解更详细的关于gtest的信息,见官网:
http://code.google.com/p/googletest
SConstruct:
env = Environment(CCFLAGS = '-g')
#gtest库
gtestFile = [ 'src/gtest-all.cc']
gmainFile = [ 'src/gtest_main.cc']
#testfile
testFile = [ 'src/foo_test.cpp' ]
includePath = [ 'include' ]
libPath = [ 'lib', '/usr/local/lib','usr/lib64' ]
libs = [ 'pthread','gtest','gtest_main']
StaticLibrary('lib/gtest',source=gtestFile,CPPPATH=includePath)
StaticLibrary('lib/gtest_main',source=gmainFile,CPPPATH=includePath)
env.Program( 'test',source=testFile,CPPPATH=includePath,LIBS=libs,LIBPATH=libPath)
相关文章推荐
- Google C++测试框架系列入门篇:第一章 介绍:为什么使用GTest?
- Google C++测试单元工具 gtest简单使用(win vs & linux)
- 玩转 Google开源C++单元测试框架Google Test系列(gtest)之五 - 死亡测试(转载)
- Google C++单元测试框架(Gtest)系列教程之二——断言、函数测试
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之五 - 死亡测试
- linux下的内核测试工具——perf使用简介
- Google C++测试框架系列入门篇:第一章 介绍:为什么使用GTest?
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之五 - 死亡测试
- linux下的内核测试工具——perf使用简介
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之五 - 死亡测试
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之五 - 死亡测试
- Linux下Eclipse中boost测试框架共享库的使用
- Google C++单元测试框架(Gtest)系列教程之二——断言、函数测试
- Linux下Gtest测试框架应用实例
- 基于c++和linux的线程池技术及框架实现(网络下载,测试并修改其中可能的错误)
- 【转】玩转Google开源C++单元测试框架Google Test系列(gtest)之五 - 死亡测试
- Google C++单元测试框架(Gtest)系列教程之三——测试固件(Test fixture)
- GTest测试框架中的friend(友元)使用注意点
- 为什么使用googletest,而不是其他C++测试框架(译自google faq的该问题)
- linux下的内核测试工具——perf使用简介