ZhiBing's blog(码上看世界) ZhiBing's blog(码上看世界)
首页
  • Linux工具链

    • shell命令
  • 构建

    • CMake
    • Makefile
  • 版本管理

    • Git
    • Github
  • IDE及工具

    • vscode
    • CLion
  • 设计模式

    • 设计原则
  • 编程语言

    • C++
    • Go
    • Python
    • Shell
  • 调试

    • gdb
  • 开发者测试

    • gtest
  • 系统支撑

    • 操作系统
  • 性能优化

    • 编译优化选项
    • perf
    • valgrind
  • 容器

    • Docker
  • 微服务

    • Rancher
  • 其他
  • 随笔
  • 友情链接
收藏
  • 分类
  • 标签
  • 归档
关于
GitHub (opens new window)

ZhiBing Zheng

时间会回答成长
首页
  • Linux工具链

    • shell命令
  • 构建

    • CMake
    • Makefile
  • 版本管理

    • Git
    • Github
  • IDE及工具

    • vscode
    • CLion
  • 设计模式

    • 设计原则
  • 编程语言

    • C++
    • Go
    • Python
    • Shell
  • 调试

    • gdb
  • 开发者测试

    • gtest
  • 系统支撑

    • 操作系统
  • 性能优化

    • 编译优化选项
    • perf
    • valgrind
  • 容器

    • Docker
  • 微服务

    • Rancher
  • 其他
  • 随笔
  • 友情链接
收藏
  • 分类
  • 标签
  • 归档
关于
GitHub (opens new window)
  • 编程语言

  • 调试

  • 开发者测试

    • gtest

      • GTest Day 0 —— 编译GoogleTest
      • GTest Day 1 —— 基础使用
      • GTest Day 2 —— 测试套件(TestSuite)的使用
      • GTest Day 3 —— 测试夹具(TestFixture)的使用
  • 系统支撑

  • 性能优化

  • 通用领域
  • 开发者测试
  • gtest
zhengzhibing
2022-07-24

GTest Day 3 —— 测试夹具(TestFixture)的使用

# GTest Day 3 —— 测试夹具(TestFixture)的使用

如果您发现自己编写了两个或多个对相似数据进行操作的测试,您可以使用测试夹具。这允许您为多个不同的测试重用相同的对象配置。

创建测试夹具:

  1. 创建一个继承::testing::Test的类。
  2. 在类中声明你想复用的对象和数据。
  3. 定义构造和析构函数,并以protected访问权限,声明一个编写一个void SetUp() override和void TearDown() override函数。
  4. 如果有需要可以定义一些公共的函数,只要你想要。

示例:

class DemoFixtrue : public testing::Test {
public:
    DemoFixtrue() = default;
    ~DemoFixtrue() override = default;

    void DoSomething() {}

protected:
    void SetUp() override {}
    void TearDown() override {}
};
1
2
3
4
5
6
7
8
9
10
11

SetUp()和TearDown()函数的作用,后面会说明。

使用测试夹具,需要使用TEST_F 而不是TEST。在TEST_F中可以访问测试夹具中的对象和函数。

TEST_F(TestFixtureName, ) {
  ... test body ...
}
1
2
3

TestFixtureName就是我们创建的测试夹具类的名称。所以使用TEST_F之前需要定义好测试夹具。

TestName是测试用例名称。

对于每个测试TEST_F(),googletest 将在运行时创建一个新的测试夹具,立即通过 初始化它SetUp(),运行测试,通过调用清理TearDown(),然后删除测试夹具。请注意,同一测试套件中的不同测试具有不同的测试夹具对象,并且 googletest 总是在创建下一个测试夹具之前删除一个测试夹具。googletest 不会为多个测试重用相同的测试夹具。一项测试对夹具所做的任何更改都不会影响其他测试。

TEST_F(DemoFixtrue, test1)
{
    DoSomething();
}

TEST_F(DemoFixtrue, test2)
{
    DoSomething();
}
1
2
3
4
5
6
7
8
9

总结一下googletest运行测试夹具的顺序:

  1. 保存所有 googletest 标志的状态。
  2. 为第一个测试创建一个测试夹具对象(成员初始化,构造函数调用)。
  3. 执行测试夹具的SetUp()函数进行初始化。
  4. 在测试夹具对象上运行测试用例。
  5. 执行测试夹具的TearDown()函数进行清理。
  6. 删除测试夹具对象(析构函数调用)。
  7. 恢复所有 googletest 标志的状态。
  8. 对下一个测试重复上述步骤,直到所有测试都运行。

如果发生致命故障,则将跳过后续步骤。

#gtest
上次更新: 2022/11/06, 19:00:13
GTest Day 2 —— 测试套件(TestSuite)的使用
内存分区

← GTest Day 2 —— 测试套件(TestSuite)的使用 内存分区→

最近更新
01
HPE gen10 plus 安装ESXI 7
06-12
02
ESXI 7安装黑群晖
06-12
03
ESXI 7安装win10
06-12
更多文章>
Theme by Vdoing | Copyright © 2022-2024 ZhBing Zheng | 粤ICP备2022062743号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式