第一次学习翻译,感觉有点别扭,希望通过后面的努力能有所提高。
此次翻译的是:http://code.google.com/p/googletest/wiki/Primer
引言:
开始学习 Google C++ 测试框架
1. 简介:为什么需要 Google C++ 测试框架
2. 创建一个新的测试工程
3. 基本概念
4. 断言
基本断言
二进制比较
字符串比较
5. 简单测试
6. 测试装置:使用同一数据进行多次测试
7. 触发测试
8. 写主函数
Visual C++ 用户的重要提示
9. 到哪里去
10. 了解一下限制
简介:为什么我们需要 Google C++ 测试框架
Google C++ 测试框架可以帮助你写更好的完成C++测试
不管你是在Linux,Windows,或者Mac上开发,只要你编写C++代码,Google Test 就对你有帮助。
所以,Google C++ 测试框架是如何符合 一个好的测试条件呢? 我们认为:
1. 测试应该是 独立的,可重复的。调试一个用例,这个用例依赖与其它用例的成功或失败,这是一件很痛苦的事。Google C++ 测试框架
通过不同的对象运行测试用例来实现用例间的隔离。当一个测试用例失败,Google C++ 测试框架允许你单独的运行这个用例来快速的调试。
2. 测试应该有好的组织 并且 能够 反映出测试代码的结构 ,Google C++ 测试框架将一下相关的测试用例分成一组,同一组中的测试用例可以
共享数据跟子程序。 这种常用的模式可以便于学习和用例的维护。这种一致性在切换工程和开始新的代码时非常有用。
3. 测试应该是 可移植 和 可复用的。 开源社区 中的很多 代码是 平台无关的, 它们的测试也应该是平台无关的。Google C++ 测试框架可以运行
在不同的系统上,用不同的编译器,有 或者 没有 异常处理, 所以 Google C++ 测试框架 测试用例可以很容易的使用通过不同的配置。(注:
当前的发布版本只包含了 Linux 下的 脚本编译 ,我们正积极的使其他平台也能够脚本编译 )。
4. 当测试用例失败,应该为失败的原因提供尽可能多的信息。当第一个测试用例失败时,Google C++ 测试框架并不会终止,它只是终止当前的测试
用例,并且继续运行下一个测试用例。当然 你可以 创建测试用例,在当前用例继续运行后,报告非致命的失败。这样,你就可以在一次测试中
发现和解决更多的问题。
5. 测试框架应该将 测试用例写作人员从繁忙的家庭琐事中解放出来,让他们更加关注测试内容。Google C++ 测试框架 自动的记录定义的测试
用例, 这样当运行测试用例时,就不需要使用者一个一个列出来。
6. 测试应该是快速的。使用 Google C++ 测试框架, 不同测试用例可以复用公共资源,只需 一次 建立 和 销毁, 而不会使用例间相互依赖。
因为 Google C++ 测试框架 基于 流行的 xUnit 体系结构,所以 如果你以前使用过 JUnit 或 PyUnit , 你将会感觉非常舒服。如果没用过,你只
需要 花 10 多分钟时间学习一些基本知识就可以开始了。所以,我们赶紧吧!
注: 在一些非正式场合,我们有时将 Google C++ 测试框架 称为 Google Test。
创建一个新的测试工程
使用Google Test 写一个测试程序时,你需要 将 Google Test 编译成 lib , 然后让你的测试程序链接 Google Test 的lib 文件,我们为一些流行的编译系统提供了编译文件: Visual Studio 的编译文件在 msvc 目录下 , Mac Xcode 的编译文件在 xcode 目录下 , GNU make 在 make 目录下, Borland C++ Builder 的编译文件在 codegear 目录下 , 并且 Google Test 根目录下有 自动脚本(不推荐)和 CMake 的 CMakeLists.txt(推荐)。如果你的编译系统不在这个列表里面, 你可以看一下 make/Makefile 来了解 Google Test 是怎么编译的(基本上 你想通过 GTEST_ROOT 来编译 src/gtest-all.cc 并且 你需要在搜索路径中添加 GTEST_ROOT/inclue , 这样GTEST_ROOT 就是Google Test 的跟目录 ) .
一旦 Google Test 库 编译通过 , 你应该为你的测试程序 创建一个工程 或 生成目标工程。 确保 GTEST_ROOT/include 在搜索路径中,这样当 你编译测试程序时, 编译器就可以找到 "gtest/gtest.h" 。创建 你的测试工程 并 让测试工程链接 Google Test 库(比如,在Visual Studio 在gtest.vcproj中添加依赖来实现)。
如果你还有问题,看一下 Google Test 自己的测试程序是如何生成和使用Google Test 库的。
基本概念
当我们用Google Test时, 你是从写断言开始的,断言被声明用来检测一个条件是否为真。 一个断言的结果可以是成功的,非致命性失败 , 或致命性失败,这时它使当前的函数终止,否则程序继续运行。
测试用断言来验证被测试代码的行为,当测试失败时,它将崩溃 或 有一个失败的断言, 否则测试成功。
一个测试用例包括 一个 或 多个测试。你应该将测试用例分组,这样可以反应出被测试代码的结构。 当 一个测试簇里面的多个测试用例需要共享公共对象和子程序时,你应该将这些测试用例放在一个类容器中。
一个测试程序可以包含多个测试用例。
我们现在即将如何些一个测试程序,从一个断言的级别开始,到创建测试用例及测试簇。