当前位置: 首页 > news >正文

[C++][第三方库][gtest]详细讲解

目录

  • 1.介绍
  • 2.安装
  • 3.使用
    • 1.头文件包含
    • 2.框架初始化接口
    • 3.调用测试样例
    • 4.TEST宏
    • 5.断言宏
    • 6.示例


1.介绍

  • gtest是一个跨平台的C++单元测试框架,由Google公司发布
  • gtest为了在不同平台上为编写C++单元测试而生成的,它提供了丰富的断言、致命和非致命判断、参数化等等测试所需的宏,以及全局测试,单元测试组件

2.安装

  • 直接命令安装sudo apt install libgtest-dev

3.使用

1.头文件包含

#include <gtest/gtest.h>

2.框架初始化接口

testing::InitGoogleTest(&argc, argv);

3.调用测试样例

RUN_ALL_TESTS();

4.TEST宏

  • 此处不需要双引号括住文本内容,且同测试下多个测试样例不能同名
    TEST(测试名称, 测试样例名称)
    {// do somethinh
    }TEST_F(text_fixture, test_name)
    {// do something
    }
    
  • TEST:主要用来创建一个简单测试,它定义了一个测试函数,在这个函数中可以使用任何C++代码并且使用框架提供的断言进行检查
  • TEST_F:主要用来进行多样测试,适用于多个测试场景如果需要相同的数据配置的情况, 即相同的数据测不同的行为

5.断言宏

  • gtest中的宏可以分为两大类
    • ASSERT_系列:如果当前点检测失败则退出当前测试用例
    • EXPECT_系列:如果当前点检测失败则继续往下执行
  • 常用断言介绍
    • bool值检查
      • ASSERT_TRUE(参数):期待结果是true
      • ASSERT_FALSE(参数):期待结果是false
      • 数值型数据检查
        • ASSERT_EQ(参数1,参数2)equal,传入的是需要比较的两个数
        • ASSERT_NE(参数1,参数2)not equal,不等于才返回true
        • ASSERT_LT(参数1,参数2)less than,小于才返回true
        • ASSERT_GT(参数1,参数2)greater than,大于才返回true
        • ASSERT_LE(参数1,参数2)less equal,小于等于才返回true
        • ASSERT_GE(参数1,参数2)greater equal,大于等于才返回true

6.示例

  • main.cc
    #include <iostream>
    #include <gtest/gtest.h>int Add(int x, int y)
    {return x + y;
    }TEST(Plus_Test, Equal)
    {ASSERT_EQ(Add(10, 10), 20);
    }TEST(ERROR_TEST, NE)
    {ASSERT_EQ(Add(10, 10), 30);
    }TEST(EXPECT_TEXT, EXPECT)
    {EXPECT_LT(Add(20, 20), 10);std::cout << "Output in EXPECT_TEST, but after EXPECT_LT" << std::endl;ASSERT_EQ(Add(10, 10), 30);std::cout << "Output in EXPECT_TEST" << std::endl;
    }int main(int argc, char* argv[])
    {// Init Test Moduletesting::InitGoogleTest(&argc, argv);// Invokle all testsreturn RUN_ALL_TESTS();
    }
    
  • makefile
    main:main.ccg++ -o $@ $^ -std=c++17 -lgtest.PHONY:clean
    clean:rm main
    
  • 运行示例
    $ ./main 
    [==========] Running 3 tests from 3 test suites.
    [----------] Global test environment set-up.
    [----------] 1 test from Plus_Test
    [ RUN      ] Plus_Test.Equal
    [       OK ] Plus_Test.Equal (0 ms)
    [----------] 1 test from Plus_Test (0 ms total)[----------] 1 test from ERROR_TEST
    [ RUN      ] ERROR_TEST.NE
    main.cc:16: Failure
    Expected equality of these values:Add(10, 10)Which is: 2030
    [  FAILED  ] ERROR_TEST.NE (0 ms)
    [----------] 1 test from ERROR_TEST (0 ms total)[----------] 1 test from EXPECT_TEXT
    [ RUN      ] EXPECT_TEXT.EXPECT
    main.cc:21: Failure
    Expected: (Add(20, 20)) < (10), actual: 40 vs 10
    Output in EXPECT_TEST, but after EXPECT_LT
    main.cc:25: Failure
    Expected equality of these values:Add(10, 10)Which is: 2030
    [  FAILED  ] EXPECT_TEXT.EXPECT (0 ms)
    [----------] 1 test from EXPECT_TEXT (0 ms total)[----------] Global test environment tear-down
    [==========] 3 tests from 3 test suites ran. (0 ms total)
    [  PASSED  ] 1 test.
    [  FAILED  ] 2 tests, listed below:
    [  FAILED  ] ERROR_TEST.NE
    [  FAILED  ] EXPECT_TEXT.EXPECT2 FAILED TESTS
    

http://www.lryc.cn/news/452480.html

相关文章:

  • 【Java数据结构】 链表
  • 前端——Ajax和jQuery
  • C++-vector模拟实现
  • Activity
  • 【力扣 | SQL题 | 每日四题】力扣1581, 1811, 1821, 1831
  • 洛谷【P1955 [NOI2015] 程序自动分析】
  • Swift并发笔记
  • React 组件命名规范
  • eNSP网络配置指南:IP设置、DNS、Telnet、DHCP与路由表管理
  • 初步认识产品经理
  • web前端面试中拍摄的真实js面试题(真图)
  • python 人工智能 机器学习 当损失函数的数值变成 `nan` 时,这通常意味着在模型训练过程中出现了数值不稳定性以及解决办法,数据分析
  • Kafka快速实战与基本原理详解
  • tftp传文件被服务器拒绝进入tftp: server error: (768) Access to staonline.pcap denied
  • express,生成用户登录后的 token
  • 银河麒麟桌面操作系统修改默认Shell为Bash
  • 卷积神经网络(Convolutional Neural Networks, CNN)
  • SpringBoot系列 启动流程
  • vgg19提取特征
  • Qt 中的 QChartView
  • cheese安卓版纯本地离线文字识别插件
  • 【C++】多肽
  • Linux下Socket编程
  • Scrapy 爬虫的大模型支持
  • 数据仓库简介(一)
  • Kafka和RabbitMQ区别
  • go-zero学习
  • python如何查询函数
  • 计算机视觉与深度学习 | 从激光雷达数据中提取地面点和非地面点(附matlab代码)
  • vulnhub-wakanda 1靶机