Appearance
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:
- 应用启动并渲染首页 Lab 列表;
- PlatformChannel 页面可打开并完成一次电量读取不崩溃;
- CachedNetworkImage 页面在真实网络下可渲染。