SuperAPI AI 工具集

zig-testing

测试与质量

查看项目

更新于 10-15 21:48

技能介绍

用途:面向 Zig 0.16.0 的测试与调试技能,帮助编写单元测试、组织测试、检测内存泄漏,并使用 std.debug 进行日志与问题诊断。

主要能力:

  • 断言:expect、expectEqual、expectEqualDeep、expectEqualStrings、expectEqualSlices、expectError、expectApproxEqAbs、expectApproxEqRel、expectFmt、expectStringStartsWith、expectStringEndsWith。
  • 测试组织:test 声明、doctest、测试过滤器、测试模块聚合。
  • 内存泄漏检测:DebugAllocator 与 std.testing.allocator。
  • 日志与调试:std.log 分级日志、作用域日志、运行时日志级别、std.debug.assert、unreachable、@panic、堆栈回溯、hexDump。

使用方式:

  • 声明测试:test "name" { ... }。
  • 运行测试:zig test src/main.zig 或 zig build test。
  • 过滤测试:zig test src/main.zig --test-filter "http",或在 build.zig 中设置 filters。
  • 日志级别:zig build -Dlog-level=debug,或 zig build -Dlog-scope-override=http_client=debug。
  • 测试配置:在 build.zig 中用 b.addTest 与 b.addRunArtifact 定义 test 步骤。

适用场景:编写单元测试、调试函数输出、检查内存泄漏、诊断运行时问题。

限制与注意:

  • 前置要求:确认 Zig 版本(zig version)。
  • 不适用范围:构建系统测试配置请用 zig-build-system 技能;集成测试框架请用 zig-0.16 技能;性能基准测试暂不涉及(Zig 尚未内置 benchmark)。
  • expectEqual 使用 peer type,两参数需显式类型一致,推荐 expectEqual(@as(u32, 42), value)。
  • testing.allocator 仅用于测试,自动检测泄漏但性能较差,生产环境用 DebugAllocator。
  • test 声明不能嵌套。
  • doctest 只验证不输出,panic 时不显示详细信息。
  • std.log.debug 默认不显示,需构建时启用 -Dlog-level=debug。
  • 本技能不收集、存储或传输任何用户数据。