本篇主要介绍Google Test(有时也称为gtest)的相关基础知识。
1 Why googletest
此处引用 google test 在 GitHub 上的介绍:
googletest helps you write better C++ tests.
googletest is a testing framework developed by the Testing Technology team with Google's specific requirements and constraints in mind. No matter whether you work on Linux, Windows, or a Mac, if you write C++ code, googletest can help you. And it supports any kind of tests, not just unit tests.
googletest 是一个由 Google 的测试技术团队开发的测试框架,它考虑到了谷歌的特定需求和限制。无论你使用的是 Linux、Windows 还是 Mac,只要你编写 C++ 代码,googletest 都可以帮到你。它支持任何类型的测试,不只是单元测试。
2 相关知识
2.1 术语说明
Test: 测试;
Test Case: 测试用例;
Test Suite: 测试套件。
由于某些历史原因,GoogleTest使用 Test Case 来分组相关的测试,即将相关的Test 归为一组;然而,当前的出版物包括 ISTQB(International Software Testing Qualifications Board,国际软件测试资格委员会) 和很多关于软件质量的书籍都使用 Test Suite 替换 Test Case表示这一含义;而 googletest 中的 Test 则对应 ISTQB 的 Test Case。总结后,即下表内容:
Meaning | Google Test term | ISTQB term |
---|---|---|
Exercise a particular program path with specific input values and verify the result 以特定输入值执行一个特定的程序路径并验证结果 |
Test | Test Case |
A set of several tests related to one component | Test Case | Test Suite |
2.2 基本概念
使用 googletest,最先写的就是断言(assertion)。断言是一种检查某个条件是否为真的描述。断言的结果可以是成功、非致命失败、致命失败。当致命失败发生时,当前函数将会终止;而断言的其他结果则不会有此效果。
Test 使用断言来判断测试代码的行为:如果一个 Test崩溃了或者出现了一个失败的断言,则该 Test 就失败了;反之,它就是成功的。
Test case 包括一个或多个 Test。我们应当把 Test