SuperAPI AI 工具集

flutter-testing

测试与质量

查看项目

更新于 10-16 02:31

技能介绍

用途:在 Flutter 项目实现完成后,按优先级顺序编写测试,优先保证业务逻辑正确,UI 测试放最后。开始时应声明“I'm using the flutter-testing skill to write tests.”。

主要能力与优先级:优先级 1 为 Repository 与 DataSource 单元测试,覆盖业务逻辑正确性、API 集成与数据转换;优先级 2 为状态管理单元测试,覆盖 BLoC/Cubit 事件处理、Provider 状态转换与错误状态;优先级 3 为可选的 Widget 测试,覆盖用户交互、渲染与导航;优先级 4 为 Golden 测试(视觉回归),覆盖设计系统组件快照、像素级比较与 CI 集成;另有可选的集成测试用于完整应用流程。

使用方式:模板统一使用 mocktail 做 mock(无需代码生成),BLoC 测试用 bloc_test,Riverpod 用 ProviderContainer 与 overrideWithValue。运行命令:flutter test;指定目录或文件如 flutter test test/features/auth/;覆盖率 flutter test --coverage,再用 genhtml coverage/lcov.info -o coverage/html 生成报告。Golden 基线更新用 flutter test --update-goldens,CI 比较用 flutter test --tags golden,可在 dart_test.yaml 定义 golden 标签并在测试文件加 @Tags(['golden'])。依赖安装:flutter pub add dev:mocktail、flutter pub add dev:bloc_test,使用 Freezed 时 flutter pub add freezed_annotation、flutter pub add dev:freezed、flutter pub add dev:build_runner,并运行 dart run build_runner build --delete-conflicting-outputs。

适用场景:设计系统组件、主题变更、深浅色切换、响应式断点的视觉验证适合 Golden 测试;业务逻辑重的页面、频繁变动或强依赖外部数据的页面建议跳过 Golden。简单无状态、无交互、纯展示的 Widget 可跳过 Widget 测试,但 Repository、状态管理与错误处理测试不应跳过。

限制与注意:Golden 测试需固定画布尺寸(setSurfaceSize)、使用确定性数据、预加载自定义字体、用 mock 替换网络图片,并固定 CI 环境以避免平台渲染差异。测试文件按 features 目录组织,Golden 文件以 _golden_test.dart 结尾。编写测试后必须调用 flutter-craft:flutter-verification 并运行 flutter test 确认全部通过。