Google's Framework for writing C++ tests on a variety of platforms(Linux, Mac OS X, Windows, Cygwin, Windows CE, and Symbian). Based on teh xUnit architecture. Supports automatic test discovery, a rich set of assertions, user-defined assertions, death tests, fatal and non-fatal failures, value-and type-parameterized tests, various options for running the tests, and XML test report generation.
Linux:
gtest是一个跨平台的C++测试框架,google作品。
它支持自动发现测试,断言集,用户定义的断言,death测试,致命与非致命的失败,类型参数化测试,各类运行测试的选项和XML的测试报告。
(1).下载gtest
http://code.google.com/p/googletest/downloads/list
笔者下载的是版本1.7.0
http://code.google.com/p/googletest/downloads/detail?name=gtest-1.7.0.zip
(2).安装gtest
**安装过程
确认lib目录下生成了libgtest.a和libgtest_main.a,这两个库是后续测试程序需要链接的库。(由于笔者对linux熟悉程度没过关,所以全部拷到/usr/lib目录下,也可以编译通过,在熟悉些,定不该如此做。)
(3).测试gtest
测试foo.h中的一个max函数(求两个数中较大的一个)
foo.h文件内容如下:
**源码
编写测试程序foo_test.cpp来对foo进行测试:
foo_test.cpp文件内如下:
**源码
创建一个编译foo_test.cpp的脚本compile.sh,编译命令如下:
**编译命令
需要注意的是,要链接pthread这个库。
执行结果如下:
上述的成功和失败是和测试程序相关,一一对比就可知道原因。
**测试结果
(4).说明总结
**test
这是要测试的测试用例,后面是执行内容
foo:测试用例名称
max:测试名称
这两个参数都只起到提示作用,也可以按照如下方式使用
foo:类名
max:方法名
或者(这里用的方式是如此)
foo:文件名
max:函数名
EXPECT_EQ(value1, value2);
用例执行成功时,期望value1和value2是相等的,相等才算通过测试,如上例中:
EXPECT_EQ(2, max(2, -1));
max(2, -1)的执行结果值期望是2,如果不等,则用例运行失败。
**main
这是main函数,InitGoogleTest会初始化一些环境变量,RUN_ALL_TESTS()会调用所有的TEST(name1, name2);
(6)拓展延伸
更多可获取gtest资料,见官网:http://code.google.com/p/googletest/