Skip to content

Mysvac/cpp-json-test

Repository files navigation

C++ JSON库 测试框架

效果图在最下方。

项目概要

C++23 JSON解析库测试框架,内存安全,跨平台,易用。

提供 基础有效性验证、序列化测速度、反序列化测试、增删改查测试、内存占用 等多项测试内容。

提供测试报告和结果数据表格,提供工具生成测试对比图。

项目介绍

基本说明

  1. 框架采用C++23,框架本身仅依赖标准库。
  2. 项目构建使用CMake,搭配CMakePreset,完全跨平台。
  3. 第三方库管理,默认使用vcpkg,可以自行修改CMakePreset调整。

如何导入新的库

下面提供3种方式:

  1. 使用vcpkg安装第三方库,推荐清单模式,使用vcpkg add port 包名添加。然后在CMakeLists.txt中使用find_packagetarget_link_libraries即可。
  2. 直接放源码。将头文件放入include文件夹,将源文件放入src文件夹即可,项目构建/生成时会把这些代码也加入构建/编译生成。
  3. 使用vcpkg的custom-overlay模式,添加自定义位置的第三方库,推荐看官方示例。

工作原理概要

工作方式

TestBase的子类,也就是各库的测试代码文件,统一放在src/libs/目录下。

如何测试新的库

根据上述的工作原理,你只需要写一个.cpp文件,编写子类并将其注册到全局单例。

docs 文件夹中提供了一份 model_zh.cpp 模板,将其复制到 src/libs/ 目录下,重命名为 你的库名.cpp,然后根据注释修改代码,即可自动实现功能测试。

项目构建与编译

如果你有CMake基础,可以看看CMakeLists.txtCMakePresets.json,项目结构其实非常简单。

根据自己的情况,调整一下CMakePresets.json,然后选择合适的预设选项:

cmake --preset <configure-preset-name>
cmake --build --preset <build-preset-name>

请使用 Release 模式以保证测试结果可信,深层递归解析测试可能失败。

使用测试结果

完成上述步骤并运行可执行程序。

测试完成后,各种数据将放在result/文件夹下,这里有三大内容:

  1. result.csv文件,存放着各库各测试项目的具体分数。
  2. get_chart_**.pyPython程序,用于读取result.csv并生成图表。
  3. reports 文件夹,生成错误报告。

请进入result/文件夹,然后执行python get_chart_zh.py命令即可。
图片将生成在result/charts_zh/文件夹中。

注意事项

  1. 标准库模块实验性支持,需要自行通过CMake预设设置 CMAKE_EXPERIMENTAL_CXX_IMPORT_STD 变量
  2. 项目中有一个 vct-tools-json 库,此库将作为测试基准。
  3. src 中的文件是递归解析的,可以自定义文件夹结构。
  4. 现有测试文件(src/libs/中的文件)可以删除,即使全删也能运行程序。
  5. 如果删除了测试文件,记得修改CMakeLists.txtvcpkg.json,删除项目的库依赖。

效果例图

内存占用 混合解析 浮点解析 字符解析 混合序列化 浮点序列化 字符序列化 混合美化序列化 拷贝获取子元素 拷贝添加子元素 删除子元素

About

A C++JSON library testing framework

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published