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

(10) GTest c++单元测试(mac版)

文章目录

    • 概要
    • 安装
    • 实现机制-断言(简单、独立的测试)
    • 实现机制-测试套件
    • 实现机制-Test Fixture和事件

概要

官方文档
https://google.github.io/googletest/

安装

 git clone https://github.com/google/googletest
 cd googletest
 mkdir build && cd build
 cmake ..
 make
 make install

实现机制-断言(简单、独立的测试)

Gtest提供了一系列丰富的断言宏,用于验证测试结果。断言宏可以分为两类:ASSERT系列 EXPECT系列

  • 如果ASSERT_XXX 测试不通过,后面的测试不会执行,测试直接终止
  • 如果EXPECT_XXX 测试结果不通过,后面的测试会继续执行

_XXX后缀代表具体的检查类型
在这里插入图片描述

#include <iostream>
#include <gtest/gtest.h>
 
int add(int a, int b) {
    return a + b;
}
 
int sub(int a, int b) {
    return a - b;
}
 
// case1
TEST(testdemo1, c1) {
    EXPECT_EQ(3, add(1, 2));
    EXPECT_EQ(12, add(2, 6));
}
 
// case2
TEST(testdemo2, c2) {
    EXPECT_EQ(-1, sub(1, 2));
}
 
GTEST_API_ int main(int argc, char ** argv) {
    testing::InitGoogleTest(&argc, argv);
    EXPECT_EQ(3, add(1, 2));
    return RUN_ALL_TESTS();
}

运行结果:
在这里插入图片描述

实现机制-测试套件

为了方便的管理和组织多个测试用例,Gtest框架可以将测试用例组织称测试套件(Test Suite),并且可以嵌套多个。

Gtest将测试程序分为三个层级:

  • test plan:对应一个单独的可执行程序,又一个入口main函数
  • Test Suite:测试用例的集合
  • Test Case:一个单独的测试函数或测试用例,是测试的最小单位
// case1
// test 为Test Suite的名称为test case的名称
TEST(test, c1) {
    EXPECT_EQ(3, add(1, 2));
    EXPECT_EQ(12, add(2, 6));
}

实现机制-Test Fixture和事件

我们希望在测试之间共享数据、对象,避免重复的设置和清理,做好代码测试的复用。Gtest提供了Test Fixture,能在测试前后统一做一些准备或清理操作。这些操作称为测试事件。

在这里插入图片描述
详细可以看 test fixture


http://www.kler.cn/a/349897.html

相关文章:

  • Couchbase UI: Indexes
  • 前端力扣刷题 | 4:hot100之 子串
  • Android WebView 中网页被劫持的原因及解决方案
  • 数据结构与算法再探(六)动态规划
  • 技术之翼,创作之心
  • leetcode_链表 203.移除链表元素
  • Python cachetools常用缓存算法汇总
  • Python的dataframe 排序
  • MySQL 【日期】函数大全(四)
  • ollama + fastgpt+m3e本地部署
  • AI视频监控卫士:免费开源,一键安装轻松实现智能监控
  • Unity客户端HR面面经
  • 人工智能学习框架
  • Springboot 接入 WebSocket 实战
  • AMBA:AHB的历史(从AHB2到AHB5)
  • 0基础能不能转行做网络安全?
  • linux信号 | 学习信号四步走 | 全解析信号的产生方式
  • Flume面试整理-常见的Sink类型
  • 中小型医院网站:Spring Boot开发策略
  • 安装TDengine数据库3.3版本和TDengine数据库可视化管理工具
  • 杂记9---C++工程目录一键生成脚本分享
  • 2015年-2016年 软件工程程序设计题(算法题)实战_c语言程序设计数据结构程序设计分析
  • Spring Security自定义登录接口处理JSON请求体
  • 开源OpenStack
  • 施磊C++ | 进阶学习笔记 | 5.设计模式
  • H3Linux部署iMC智能管理中心平台PLAT-7.3_E0706实验