博客
关于我
Google Test 介绍(一)
阅读量:131 次
发布时间:2019-02-26

本文共 1657 字,大约阅读时间需要 5 分钟。

为什么选择 Google Test

Google Test(简称 GTest)是一款专为 C++ 开发的测试框架,旨在满足谷歌特定项目的测试需求。无论你身处 Linux、Windows 还是 Mac 平台,只要你编写 C++ 代码,GTest 都能为你提供强有力的支持。此外,GTest 不仅支持单元测试,还是一个通用的测试框架,可以用于各种测试场景。

GTest 的基本概念

在 GTest 中,"Test"、"Test Case" 和 "Test Suite" 这三个概念经常被混淆。根据 GTest 的设计理念,"Test Case" 用于将相关的 "Test" 组合在一起,而现代软件质量书籍和 ISTQB(国际软件测试资格认证委员会)则通常使用 "Test Suite" 来替代 "Test Case"。在 GTest 中,"Test" 对应于 ISTQB 的 "Test Case"。

以下是三个概念的对应关系:

含义 GTest 中的 Term ISTQB 中的 Term
验证特定程序路径的特定输入值及其结果 TEST() Test Case
一组与某个组件相关的多个测试 Test Case Test Suite

GTest 的断言机制

在 GTest 中,最基本的操作是编写断言(assertion),断言用于检查某个条件是否为真。断言的结果可以是成功、非致命失败或致命失败。当断言失败时,GTest 会提供详细的错误信息,包括断言所在的文件和行号。

GTest 中的 "Test" 通过断言来验证代码的行为。如果 "Test" 因断言失败而崩溃或抛出非致命错误,则该 "Test" 就被视为失败。反之,则认为测试已通过。

一个 "Test Case" 可以包含多个 "Test"。为了提高测试代码的可维护性和复用性,我们可以将共享的对象和子程序放入一个 "Test Fixture" 类中。一个测试程序可以包含多个 "Test Case"。

GTest 提供了两种类型的断言:

  • 致命断言(ASSERT_*):当断言失败时,立即终止当前函数,导致程序崩溃。
  • 非致命断言(EXPECT_*):当断言失败时,仅记录错误信息,不会终止程序。
  • 由于致命断言可能导致程序中后续清理操作被跳过,从而引发内存泄露问题,因此在使用致命断言时需要特别注意这一点。

    GTest 提供了丰富的断言类型,包括:

    • 基本断言

      • ASSERT_TRUE(condition)
      • EXPECT_TRUE(condition)
      • ASSERT_FALSE(condition)
      • EXPECT_FALSE(condition)
    • 二元断言

      • ASSERT_EQ(val1, val2)
      • EXPECT_EQ(val1, val2)
      • ASSERT_NE(val1, val2)
      • EXPECT_NE(val1, val2)
      • ASSERT_LT(val1, val2)
      • EXPECT_LT(val1, val2)
      • ASSERT_LE(val1, val2)
      • EXPECT_LE(val1, val2)
      • ASSERT_GT(val1, val2)
      • EXPECT_GT(val1, val2)
      • ASSERT_GE(val1, val2)
      • EXPECT_GE(val1, val2)
    • 字符串断言

      • ASSERT_STREQ(str1, str2)
      • EXPECT_STREQ(str1, str2)
      • ASSERT_STRNE(str1, str2)
      • EXPECT_STRNE(str1, str2)
      • ASSERT_STRCASEEQ(str1, str2)
      • EXPECT_STRCASEEQ(str1, str2)
      • ASSERT_STRCASENE(str1, str2)
      • EXPECT_STRCASENE(str1, str2)

    通过这些断言,我们可以对代码的行为进行全面验证。例如,可以验证某个函数返回的值是否等于预期值,或者某个操作是否成功完成。

    转载地址:http://jqxf.baihongyu.com/

    你可能感兴趣的文章
    Nginx Location配置总结
    查看>>
    Nginx log文件写入失败?log文件权限设置问题
    查看>>
    Nginx Lua install
    查看>>
    nginx net::ERR_ABORTED 403 (Forbidden)
    查看>>
    Nginx SSL私有证书自签,且反代80端口
    查看>>
    Nginx upstream性能优化
    查看>>
    Nginx 中解决跨域问题
    查看>>
    nginx 代理解决跨域
    查看>>
    Nginx 动静分离与负载均衡的实现
    查看>>
    Nginx 反向代理 MinIO 及 ruoyi-vue-pro 配置 MinIO 详解
    查看>>
    nginx 反向代理 转发请求时,有时好有时没反应,产生原因及解决
    查看>>
    Nginx 反向代理解决跨域问题
    查看>>
    Nginx 反向代理配置去除前缀
    查看>>
    nginx 后端获取真实ip
    查看>>
    Nginx 多端口配置和访问异常问题的排查与优化
    查看>>
    Nginx 如何代理转发传递真实 ip 地址?
    查看>>
    Nginx 学习总结(16)—— 动静分离、压缩、缓存、黑白名单、性能等内容温习
    查看>>
    Nginx 学习总结(17)—— 8 个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
    查看>>
    Nginx 学习(一):Nginx 下载和启动
    查看>>
    nginx 常用指令配置总结
    查看>>