Skip to content

测试指南 (Testing)

zero-native 提供了无头(headless)测试工具,可在无 GUI 环境下对桥接与生命周期进行覆盖测试,同时也支持基于自动化的集成测试。

测试驱动器 (TestHarness)

TestHarness 提供了一个无头测试驱动程序,它内部使用 NullPlatform 并在内存中使用 BufferSink 来捕获追踪日志记录:

zig
var harness: zero_native.TestHarness = undefined;
harness.init(.{});

该驱动器提供了一个预先配置好的运行时,搭载了 NullPlatform 以及在内存中捕获日志的 trace sink。您可以使用它来测试桥接处理器(bridge handlers)、生命周期事件以及命令的分发逻辑。

TestHarness 也是 zero-native 框架自身的内部测试套件用来验证桥接策略强制执行、窗口管理和生命周期正确性时所使用的核心机制。

无头测试 (Headless tests)

框架默认的单元测试与逻辑测试套件不需要窗口服务器的支持(即无需物理显示器或 GUI 环境):

bash
zig build test
zig build test-desktop
zig build test-platform-info

桥接和进程间通信(IPC)的安全与功能测试都运行在这些无头桌面测试中:它们可以在不实际启动 WebView 的情况下,模拟注入平台桥接事件、测试命令安全策略与处理器,并断言平台返回的响应值。

WebView 冒烟测试 (WebView smoke tests)

WebView 冒烟集成测试是单独针对 macOS 的集成测试步骤,它借助了自动化测试 (Automation) 模块:

bash
zig build test-webview-smoke -Dplatform=macos
zig build test-webview-cef-smoke -Dplatform=macos -Dweb-engine=chromium

整个集成测试步骤包括:

  1. 启动启用了自动化和 JS 桥接的系统内置 WebView 示例应用;
  2. 阻塞等待自动化服务器发布首个就绪快照(相当于执行了 zero-native automate wait);
  3. 验证主窗口的元数据以及源类型(相当于执行了 zero-native automate snapshot);
  4. 通过自动化桥接通道发送一个 native.ping 桥接请求;
  5. 验证子 WebView 的创建(create)、重置大小(resize)、页面导航(navigate)以及关闭(close)等命令;
  6. 校验这些操作产生的返回响应。

CEF 冒烟测试步骤另外需要本地具有对应的 CEF 运行时环境,或者在命令行启用 -Dcef-auto-install=true;它同样通过自动化桥接校验 native.ping 以及子 WebView 的生命周期命令。由于这些冒烟测试需要一个具有 GUI 显示能力的 macOS 用户会话环境,因此被设计为“手动启用”模式(Opt-in)。

无头平台存根 (NullPlatform)

NullPlatform 是一个无头平台的存根(stub),它能够记录被加载的渲染源以及分发的事件,而无需创建真实的物理窗口。您可以在测试中或与 EmbeddedApp 配合时使用它:

zig
var null_platform = zero_native.NullPlatform.init(.{});
var runtime = zero_native.Runtime.init(.{
    .platform = null_platform.platform(),
});