用途:面向 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。
- 本技能不收集、存储或传输任何用户数据。