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

仿RabbitMQ实现消息队列(四)--sqlite3与gtest快速上手

sqlite3 & gtest

  • sqlite3
    • 什么是SQLite
    • 为什么使用SQLite
    • SQLite3 C/C++API 介绍
  • gtest
    • 使用
    • 断言

在这里插入图片描述

sqlite3

什么是SQLite

SQLite是一个进程内的轻量级数据库,它实现了自给自足的、无服务器的、零配置的、事务性的SQL数据库引擎。它是一个零配置的数据库,也就意味着与其它数据库不一样,我们不需要在系统中配置。像其他数据库,SQLite引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接,SQLite直接访问其存储文件。

为什么使用SQLite

不需要一个单独的服务器进程或操作系统。
不需要配置
一个完整的SQLite数据库是存储在一个单一的跨平台的磁盘文件

SQLite3 C/C++API 介绍

C/C++ API是SQLite3数据库的一个客户端,提供一种用C/C++操作数据库的方法。
介绍几个接口:
官方文档:https://www.sqlite.org/c3ref/funclist.html
查看当前数据库在编译阶段是否启动了线程安全
int sqlite3_threadsafe():0-未启用: 1-启用

int sqlite3_open(const char *filename, sqlite3 **ppDb) 成功返回SQLITE_OK
//若在编译阶段启动了线程安全,则在程序运行阶段可以通过参数选择线程安全等级
int sqlite3_open_v2(const char *filename, sqlite3 **ppDb, int flags, const char *zVfs );flag:SQLITE_OPEN_READWRITE -- 以可读可写方式打开数据库文件SQLITE_OPEN_CREATE -- 不存在数据库文件则创建SQLITE_OPEN_NOMUTEX--多线程模式,只要不同的线程使用不同的连接即可保证线程安全SQLITE_OPEN_FULLMUTEX--串行化模式返回:SQLITE_OK 表示成功

gtest

使用

TEST(test_case_name,test_name)
TEST_F(test_fixture,test_name)

TEST:主要用来创建一个简单测试,它定义一个测试函数,在这个函数中可以用任何C++代码并且使用框架提供的断言进行检查。
TEST_F:主要用来多样测试,适用于多个测试场景如果需要相同配置的情况,即相同的数据测不同的行为。

断言

GTest中的断言可以分为两类:

  • ASSERT_系列:如果当前点检测失败则退出当前函数。
  • EXPECT_系列:如果当前点检测失败则继续向下执行
    介绍:
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,大于才返回 trueASSERT_LE(参数 1,参数 2),less equal,小于等于才返回 trueASSERT_GE(参数 1,参数 2),greater equal,大于等于才返回 true

案例:


#include <iostream>
#include <gtest/gtest.h>
#include <unordered_map>
#include <string>
using namespace std;
std::unordered_map<std::string, std::string> mmp;class MyTest : public testing::Test
{
public:void SetUp() override{std::cout << "单元测试环境初始化:" << std::endl;mmp.insert(make_pair("你哈", "hello"));mmp.insert(make_pair("五花肉", "keyi"));}void TearDown() override{cout << "单元测试完毕后的环境清理!" << endl;mmp.clear();}
};
TEST_F(MyTest,test1)
{ASSERT_EQ(mmp.size(),2);mmp.erase("hello");
}
TEST_F(MyTest,test2)
{ASSERT_EQ(mmp.size(),2);
}
int main(int argc, char **argv)
{testing::InitGoogleTest(&argc, argv);return RUN_ALL_TESTS();
}

结果


[==========] Running 2 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 2 tests from MyTest
[ RUN      ] MyTest.test1
单元测试环境初始化:
单元测试完毕后的环境清理!
[       OK ] MyTest.test1 (0 ms)
[ RUN      ] MyTest.test2
单元测试环境初始化:
单元测试完毕后的环境清理!
[       OK ] MyTest.test2 (0 ms)
[----------] 2 tests from MyTest (0 ms total)[----------] Global test environment tear-down
[==========] 2 tests from 1 test suite ran. (0 ms total)
[  PASSED  ] 2 tests.
http://www.dtcms.com/a/618336.html

相关文章:

  • 昆明网站建设_云南网站建设有网址的公司
  • 做网站后面维护要收钱吗如何做品牌运营与推广
  • 网络安全 | 深入解析CSRF攻击与防御实战
  • 动态网站发布部署核心问题详解
  • 基于RTT调试接口的项目适配性的lib库化实现与工程应用
  • 解决Blender新加面后不跟随骨骼移动(骨骼权重的绘制)
  • 深圳光明网站建设今天福州发生的重大新闻
  • Android 自定义「阶段进度条(步轴)」实践
  • 【第三阶段-核心功能开发:UI进阶】第七章:主题系统-就像室内设计师
  • discuz 手机网站wordpress 搜索自定义数据表字段
  • CC++链接数据库(MySQL)超级详细指南
  • 苍穹外卖 —— 数据统计和使用Apache_POI库导出Excel报表
  • 昆明好的网站制作网站价格评估 优帮云
  • 如何查询SQL Server数据库服务器的IP地址
  • 开源:开源协议从入门到落地
  • 网站域名要怎样规划佛山做外贸网站案例
  • 网站建设找导师蓝林月租网站空间
  • 2025 IntelliJ IDEA 2025最新免费安装教程
  • Numpy数值分析库实验
  • 游戏常用运行库丨免费纯净丨多系统支持丨自动推荐安装
  • git-拉取代码报错update ref failed ref ‘ORIG HEAD‘
  • 手机网站模板 html5西安搬家公司电话号码大全
  • 资源优化排名网站哈尔滨企业网站模板建站
  • 基于扩散模型与流模型的跨分辨率流场映射方法研究
  • 【Linux日新月异(十)】CentOS 7 文件系统结构深度解剖:从根到叶的完整指南
  • linux服务-rsync+inotify文件同步-ssh
  • 保障房建设网站首页游戏策划
  • 深度学习杂草分割系统1:数据集说明(含下载链接)
  • 超分辨率重建(Super-Resolution, SR)
  • 高端品牌网站建设注意事项制作ppt的基本做法