博客
关于我
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/

    你可能感兴趣的文章
    Python unittest单元测试框架 TestSuite测试套件
    查看>>
    PYTHON调离线语音合成并实时播放
    查看>>
    python unittest高级特性!
    查看>>
    Python unittest:如何将标准输出消息临时重定向到缓冲区并测试其内容?
    查看>>
    Python urllib/Requests下载文件失败,但浏览器下载失败
    查看>>
    Python urllib2 文件上传问题
    查看>>
    Python urllib2.open 连接由对等错误重置
    查看>>
    python urllib2详解及实例
    查看>>
    Python url请求提示certificate verify failed unable to get local issuer certificate
    查看>>
    Python UTC 日期时间对象的 ISO 格式不包括 Z(祖鲁语或零偏移)
    查看>>
    python valueerror object2_python遇到错误记录
    查看>>
    python vars的作用
    查看>>
    Python vcrpy库:HTTP请求记录和重放
    查看>>
    Python virtualenv
    查看>>
    python vue3实现大文件分段续传(断点续传)--带暂停和继续功能
    查看>>
    Python WebDriver如何打印整个页面源(html)
    查看>>
    Python WebSocket自动化测试:构建高效接口测试框架
    查看>>
    Python Web开发
    查看>>
    Redis 配置文件杂项。
    查看>>
    Python web自动化测试 —— 文件上传
    查看>>