效果图在最下方。
C++23 JSON解析库测试框架,内存安全,跨平台,易用。
提供 基础有效性验证、序列化测速度、反序列化测试、增删改查测试、内存占用 等多项测试内容。
提供测试报告和结果数据表格,提供工具生成测试对比图。
- 框架采用C++23,框架本身仅依赖标准库。
- 项目构建使用
CMake
,搭配CMakePreset
,完全跨平台。 - 第三方库管理,默认使用
vcpkg
,可以自行修改CMakePreset
调整。
下面提供3种方式:
- 使用vcpkg安装第三方库,推荐清单模式,使用
vcpkg add port 包名
添加。然后在CMakeLists.txt
中使用find_package
和target_link_libraries
即可。 - 直接放源码。将头文件放入
include
文件夹,将源文件放入src
文件夹即可,项目构建/生成时会把这些代码也加入构建/编译生成。 - 使用vcpkg的custom-overlay模式,添加自定义位置的第三方库,推荐看官方示例。
TestBase的子类,也就是各库的测试代码文件,统一放在src/libs/
目录下。
根据上述的工作原理,你只需要写一个.cpp
文件,编写子类并将其注册到全局单例。
docs
文件夹中提供了一份 model_zh.cpp
模板,将其复制到 src/libs/
目录下,重命名为 你的库名.cpp
,然后根据注释修改代码,即可自动实现功能测试。
如果你有CMake基础,可以看看CMakeLists.txt
和CMakePresets.json
,项目结构其实非常简单。
根据自己的情况,调整一下CMakePresets.json
,然后选择合适的预设选项:
cmake --preset <configure-preset-name>
cmake --build --preset <build-preset-name>
请使用 Release 模式以保证测试结果可信,深层递归解析测试可能失败。
完成上述步骤并运行可执行程序。
测试完成后,各种数据将放在result/
文件夹下,这里有三大内容:
result.csv
文件,存放着各库各测试项目的具体分数。get_chart_**.py
Python程序,用于读取result.csv
并生成图表。reports
文件夹,生成错误报告。
请进入result/
文件夹,然后执行python get_chart_zh.py
命令即可。
图片将生成在result/charts_zh/
文件夹中。
- 标准库模块实验性支持,需要自行通过CMake预设设置
CMAKE_EXPERIMENTAL_CXX_IMPORT_STD
变量 - 项目中有一个
vct-tools-json
库,此库将作为测试基准。 - src 中的文件是递归解析的,可以自定义文件夹结构。
- 现有测试文件(
src/libs/
中的文件)可以删除,即使全删也能运行程序。 - 如果删除了测试文件,记得修改
CMakeLists.txt
和vcpkg.json
,删除项目的库依赖。