SuperAPI AI 工具集

testing

测试与质量

查看项目

更新于 10-22 09:50

技能介绍

这是 Knowhere 向量检索库的测试技能说明,主题为 Testing Knowhere,用于运行单元测试、调试测试失败以及基于 Catch2 框架新增测试用例。\n\n用途与前提:需先以 WITH_UT=True 构建,然后从仓库根目录执行测试命令;构建方式参见 building 技能。示例默认 BUILD_DIR=build。\n\n运行测试:可使用 make test 运行已构建配置下的全部测试,或使用 make test WITH_DEBUG=True;也可通过 ./build/Release/tests/ut/knowhere_tests 加名称模式运行指定测试,例如 "[float metrics]" 或 "Test Mem Index*";使用 --list-tests 可列出全部测试名称。Debug 构建下可执行文件路径为 build/Debug/tests/ut/knowhere_tests;自定义输出根目录时,需向 make test 传入相同 BUILD_DIR 或调整可执行文件路径。可用的测试取决于构建选项,选择过滤条件前建议先查看 --list-tests。\n\nCatch2 常用命令:用 [tag] 运行带特定标签的测试;用 "Test Name*" 运行匹配模式的测试;--list-tests 列出所有测试;--list-tags 列出所有标签;-s 显示成功测试输出;-d yes 显示测试耗时。\n\n测试位置:测试文件位于 tests/ut/。关键文件包括 test_search.cc(浮点与二值向量的索引构建/搜索)、test_distances.cc(距离计算)、test_sparse.cc(稀疏向量索引)、test_diskann.cc(DiskANN,需启用 DiskANN 的构建)。\n\n编写新测试:文档给出基于 catch2/catch_test_macros.hpp、knowhere/index/index_factory.h 和 knowhere/version.h 的示例,使用 TEST_CASE("Create a flat index", "[flat]") 创建 FLAT 索引并断言结果。建议参考相邻测试的配置方式,并用 SECTION 组织相关用例。新增回归测试应断言被修改的行为,包括相关错误场景,而不是只验证索引创建成功。若测试引入新功能或接口,应同步更新相应仓库文档。