测试指南 (Testing)
zero-native 提供了无头(headless)测试工具,可在无 GUI 环境下对桥接与生命周期进行覆盖测试,同时也支持基于自动化的集成测试。
测试驱动器 (TestHarness)
TestHarness 提供了一个无头测试驱动程序,它内部使用 NullPlatform 并在内存中使用 BufferSink 来捕获追踪日志记录:
var harness: zero_native.TestHarness = undefined;
harness.init(.{});该驱动器提供了一个预先配置好的运行时,搭载了 NullPlatform 以及在内存中捕获日志的 trace sink。您可以使用它来测试桥接处理器(bridge handlers)、生命周期事件以及命令的分发逻辑。
TestHarness 也是 zero-native 框架自身的内部测试套件用来验证桥接策略强制执行、窗口管理和生命周期正确性时所使用的核心机制。
无头测试 (Headless tests)
框架默认的单元测试与逻辑测试套件不需要窗口服务器的支持(即无需物理显示器或 GUI 环境):
zig build test
zig build test-desktop
zig build test-platform-info桥接和进程间通信(IPC)的安全与功能测试都运行在这些无头桌面测试中:它们可以在不实际启动 WebView 的情况下,模拟注入平台桥接事件、测试命令安全策略与处理器,并断言平台返回的响应值。
WebView 冒烟测试 (WebView smoke tests)
WebView 冒烟集成测试是单独针对 macOS 的集成测试步骤,它借助了自动化测试 (Automation) 模块:
zig build test-webview-smoke -Dplatform=macos
zig build test-webview-cef-smoke -Dplatform=macos -Dweb-engine=chromium整个集成测试步骤包括:
- 启动启用了自动化和 JS 桥接的系统内置 WebView 示例应用;
- 阻塞等待自动化服务器发布首个就绪快照(相当于执行了
zero-native automate wait); - 验证主窗口的元数据以及源类型(相当于执行了
zero-native automate snapshot); - 通过自动化桥接通道发送一个
native.ping桥接请求; - 验证子 WebView 的创建(create)、重置大小(resize)、页面导航(navigate)以及关闭(close)等命令;
- 校验这些操作产生的返回响应。
CEF 冒烟测试步骤另外需要本地具有对应的 CEF 运行时环境,或者在命令行启用 -Dcef-auto-install=true;它同样通过自动化桥接校验 native.ping 以及子 WebView 的生命周期命令。由于这些冒烟测试需要一个具有 GUI 显示能力的 macOS 用户会话环境,因此被设计为“手动启用”模式(Opt-in)。
无头平台存根 (NullPlatform)
NullPlatform 是一个无头平台的存根(stub),它能够记录被加载的渲染源以及分发的事件,而无需创建真实的物理窗口。您可以在测试中或与 EmbeddedApp 配合时使用它:
var null_platform = zero_native.NullPlatform.init(.{});
var runtime = zero_native.Runtime.init(.{
.platform = null_platform.platform(),
});