Skip to content

integration_test — 端到端集成测试 ​

本目录存放依赖真实宿主能力的集成测试。这些测试需要真机或模拟器才能运行: 普通 fvm flutter test 只扫描 test/,不会执行本目录;无设备的 CI 环境同样会跳过。 因此它们从未混入日常 widget 测试结果,属于「连接设备后手动触发」的一层验证。

为什么必须用真机 / 模拟器 ​

本目录用例覆盖的能力依赖真实平台实现,widget 测试的假绑定(TestWidgetsFlutterBinding) 提供不了:

  • MethodChannel / EventChannel:电量读取走 Android / iOS / ohos 宿主侧原生代码
  • CachedNetworkImage:需要真实网络与磁盘缓存
  • 真实 App 生命周期与渲染管线

如何运行 ​

先确认有可用设备,再以整个目录或单文件方式运行:

bash
cd labs/flutter/host
fvm flutter devices                                                # 查看可用设备(含 ohos 设备)
fvm flutter test integration_test                                  # 跑本目录全部集成测试(默认设备)
fvm flutter test integration_test/app_boot_test.dart -d <device>   # 指定单文件 + 设备

说明:

  • 本仓库通过 FVM 锁定 Flutter 版本(见 host 根 README「FVM 工作流」),命令一律加 fvm 前缀; 若全局 flutter 版本与本工程约束一致,等价写法为 flutter test integration_test 或 flutter test integration_test/app_boot_test.dart -d <device>。
  • <device> 取自 fvm flutter devices 输出的设备 id(macOS 桌面、iOS 模拟器、 Android 真机 / 模拟器、ohos 设备均可)。
  • 集成测试会把完整应用构建并部署到目标设备上运行,首次执行较慢, 需要对应平台的 SDK / 签名就绪(Android SDK、Xcode 等,见 host 根 README「前置条件」)。

与 test/ 下 widget 测试的分工 ​

目录运行条件覆盖内容
../test/无需设备(进程内假绑定)纯 UI 页面构建与导航冒烟
integration_test/(本目录)需要真机 / 模拟器平台插件调用、真实网络、真实生命周期链路

当前用例 ​

  • app_boot_test.dart:
    1. 应用启动并渲染首页 Lab 列表;
    2. PlatformChannel 页面可打开并完成一次电量读取不崩溃;
    3. CachedNetworkImage 页面在真实网络下可渲染。

站点构建时间:2026/8/24 23:43:17