Google C++测试框架能帮助更好的进行C++的测试。
支持的平台:Linux,Windows,Mac
怎样算一个好的测试平台,为什么Google C++ Test会合适:
1. 测试应该是独立的、可重复的。如果一个测试的结果依赖于其它测试用例的结果,debug起来将会非常痛苦。Google C++测试框架在不同的对象中运行每一个测试,从而使测试集隔离开来。当一次测试失败,你可以独立执行这个测试用例来快速debugging。
2. 测试应该有好的组织结构,并且能很好的反应测试代码的结构。Google C++测试框架将相关测试分组到共享数据和子例程的测试集中。这种样式非常容易识别并且使测试易于维护。如果要切换工程,开始在新的代码库上工作,这种一致性非常有帮助。
3. 测试应该是可移植和可重用的。开源社区有很多平台无关的代码,所以测试也应该平台无关。Google C++测试框架可运行在不同的操作系统上,用不同的编译器,用(或不用)异常,因此Google C++测试框架能通过各种配置轻松完成。
4.当测试失败,应该提供尽可能多的相关信息。Google C++测试框架不会停止在第一个测试用例失败的地方。取而代之的是,仅停止当前的测试,继续下一个。你可以创建一个测试,用于报告非致命失败,这样,你能一次搞定多个bug。
5. 一个测试框架,应该让测试人员从繁琐的基础事务中解脱出来,去专注于测试内容。Google C++测试框架自动跟踪所有的测试定义,不需要使用者运行时一一进行枚举。
6. 测试需要关注效率。Google C++测试框架,可跨测试重用共享资源,只需付出执行一次set-up/tear-down的代价,而不需要进行互相依赖。
因为Google C++测试框架基于流行的xUnit架构,如果你使用过JUnit或PyUnit,你将会发现非常容易掌握。如果没有,将花费你10分钟来学习一些基础。
接下来,会用Google Test来代替Google C++测试框架。
注意命名规则
注意:请不要将一些术语,如Test,Test Case,Test Suite等弄混淆。
Google Test会使用Test Case表示相关测试组,但现在的一些公共组织包括ISTQB等,常常用Test Suite来替代。
Google Test中的Test,对应于其它组织(如ISTQB)的Test Case。对比图如下。
Google Test术语 ISTQB术语 意思
Test() Test Case 使用特定的输入,来执行一个特殊的程序,并确认其结果
Test Case Test Suite 一个组件相关的多个测试用例
创建一个新的测试工程
使用google test创建一个新的测试工程,需要先编译google test成lib文件,并且让你的工程进行链接。我们对一些流行的编译系统提供了编译文件:msvc--用于visual studio,xcode--用于Max Xcode,make--用于GUN make,codegear--用于Borland C++编译器;根目录下CMakeLists.txt--用于CMake(推荐)。如果你的编译系统不在上述列表中,你可以参考make/Makefile,学习Google Test编译的方法(通常,编译src/gtest-all.cc 和include中的文件即可。)
当你编译好Google Test的库之后,你可以开始创建自己的测试工程并进行编译。确保你的工程包含了Google Test的库和头文件。
如果有问题,可参考Google test的测试用例是如何编译的。
基本概念
Google Test从写断言开始,断言是一个用于判断条件真假的语句。一个断言的结果可能是成功,非致命错误或致命错误。如果一个致命错误发生,会从当前函数中退出;否则程序会继续正常执行。
测试使用断言来确定测试代码的行为。如果一条用例崩溃或者断言失败,该用例失败,否则成功。
一个测试集包含一个或多个测试用例。你应该把你的测试用例分为不同的测试集,以与测试代码的结构一致。当一个测试集中