googletest
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
google开源测试框架的使用(googletest)googletest和CppUnit有点类似,功能和作用在文档(它是一篇googletest官方文档的中译版)上面有很详细的描述,本文写了两个实例,它能概括googletest的基本使用。
googletest的框架可以从上下载到,本文用的是1.0.1版本的。
内容难免有不足和错误,请大家多多指教!
1.googletest的框架的组成
解压完googletest1.0.1,目录如下:
include: 头文件
msvc和samples是一些例子
src就是googletest的源文件
2.第一个例子
在举例之间,我们先了解一些常用的断言:
ASSERT_*版本的断言失败时会产生致命失败,并结束当前函数。
EXPECT_*版本的断言产生非致命失败,而不会中止当前函数。
通常更
推荐使用EXPECT_*断言,因为它们运行一个测试中可以有不止一个的错误被报告出来。
但如果在编写断言如果失败,就没有必要继续往下执行的测试时,你应该使用ASSERT_*断言。
…
】
.
注意断言名称中出现的“CASE”意味着大小写被忽略了。
例子:
(1)我们先新建一个空的Win32控制台应用程序gtest,把googletest中的include下的头文件都加到gtest的头文件中,把src下的实现文件都加到gtest的实现文件中。
然后把项目的“配置属性”->“配置类型”改为“静态库(.lib)”。
然后我们在同一个工作区内添加一个Win32控制台应用程序SimpleTest,把gtest设为依赖项目。
并添加被测文件的头文件和实现文件,代码如下
头文件:
(
Sometimes, you want to run only a subset of the tests . for debugging or quickly verifying a change). If you set the GTEST_FILTER environment variable or the --gtest_filter flag to a filter string, Google Test will only run the tests whose full names (in the form of match the filter.
The format of a filter is a ':'-separated list of wildcard patterns (called the positive patterns) optionally followed by a '-' and another ':'-separated pattern list (called the negative patterns). A test matches the filter if and only if it matches any of the positive patterns but does not match any of the negative patterns.
A pattern may contain '*' (matches any string) or '' (matches any single character). For convenience, the filter '*-NegativePatterns' can be also written as
'-NegativePatterns'.
For example: (重要)
./foo_test Has no flag, and thus runs all its tests.
./foo_test --gtest_filter=* Also runs everything, due to the single
match-everything * value.
./foo_test --gtest_filter=FooTest.* Runs everything in test case
FooTest.
!
./foo_test --gtest_filter=*Null*:*Constructor* Runs any test whose full name contains either "Null" or "Constructor".
./foo_test --gtest_filter=-*DeathTest.* Runs all non-death tests.
./foo_test --gtest_filter=FooTest.* Runs everything in test case
FooTest except .
默认情况下,googletest是把所有定义的测试实例都运行一遍,也许你想只运行这些测试的一部分(比如说你想迅速验证一下你自己修改后的某一段代码是否通过测试,而不是全部的代码是否通过测试),那么你可以使用--gtest_filter 这个标签来过滤一下测试用例.定义完--gtest_filter之后,googletest只会运行测试名称和--gtest_filter定义一样的测试.
(我们以上面的第一个例子SimpleTest为例子, 我电脑上这个工程生成的可执行文件是在D:\testtest\gtest\debug),比如我们只想运行BOOLTEST这个测试用例,则我们在控制台上输入:
--gtest_filter=BOOLTEST.*的意思是运行BOOLTEST这个测试实例下的所有测试,当然如果你要运行全部测试实例,就直接输入SimpleTest,后面什么都不要加.
则输出:
由上面我们可以看出,此时只运行了BOOLTEST这个测试实例.如果我
们要运行多个测试实例,则我们可以用冒号”:”(冒号前后不要有空格,不然会出错)把它们连起来,比如我们要运行BOOLTEST和ADDTEST 下的所有测试,我们这么写:
)
输出如下:
关于更多测试名字如何过滤的方法,上面英文红色部分都描述了,熟悉它们可以很好得帮助我们过滤测试有例!。