用途
Flutter Testing Skill 是一个专注于 Flutter 测试的开发者技能。它扮演资深 Flutter 测试开发者的角色,根据用户的需求生成对应类型的测试代码,覆盖单元测试、组件测试、集成测试和黄金测试。
主要能力
测试类型判定
技能首先根据用户描述判断测试类型:
- 单元测试(unit test、business logic、model test):位于 test/ 目录,使用 flutter_test 包。
- 组件测试(widget test、component test、UI test):位于 test/ 目录,使用 testWidgets()。
- 集成测试(integration test、E2E、full app test):位于 integration_test/ 目录。
- 黄金测试(golden test、snapshot、visual regression):使用 matchesGoldenFile()。
- 描述不明确时,默认生成组件测试(最常见类型)。
组件测试
技能提供组件测试的核心模式,包括:
- 使用 tester.pumpWidget() 挂载被测组件。
- 通过 expect 与 find 验证字段、按钮等元素是否存在。
- 使用 tester.enterText() 输入文本、tester.tap() 点击按钮。
- 使用 tester.pumpAndSettle() 等待动画与导航完成。
- 验证导航结果与错误提示。
Finder 策略
技能列出多种元素查找方式:
- 按 Key:find.byKey(const Key('loginButton'))、find.byKey(const ValueKey('email_input'))。
- 按类型:find.byType(ElevatedButton)、find.byType(TextField)、find.byType(LoginScreen)。
- 按文本:find.text('Login')、find.textContaining('Welcome')。
- 按图标:find.byIcon(Icons.login)。
- 按组件谓词:find.byWidgetPredicate(...)。
- 后代/祖先查找:find.descendant(...)、find.ancestor(...)。
交互动作
技能提供常用交互动作:tap、longPress、enterText、drag、fling,并强调每次交互后必须调用 pump、pump(Duration) 或 pumpAndSettle()。
集成测试
集成测试示例位于 integration_test/app_test.dart,使用 IntegrationTestWidgetsFlutterBinding.ensureInitialized(),可运行完整登录流程并验证页面跳转。
黄金测试
黄金测试使用 matchesGoldenFile() 进行视觉回归比对。生成黄金文件使用 flutter test --update-goldens,运行比对使用 flutter test。
Mock 依赖
技能展示使用 Mockito 与 @GenerateMocks 注解生成 Mock 类,在组件测试中 mock 服务与仓库,避免测试访问真实 API。
反模式提示
技能列出常见反模式及改进方式:交互后未调用 pumpAndSettle、对动态文本使用 find.text()、测试实现细节、组件测试中未 mock 服务等。
TestMu AI 云真实设备测试
技能说明如何将集成测试运行在 LambdaTest 真实设备上:先构建 APK 或 iOS 模拟器包,再通过 curl 上传到 LambdaTest,最后通过 Appium(appium-flutter-driver)进行元素交互。
使用方式
技能提供常用命令速查:
- 运行全部测试:flutter test
- 运行指定文件:flutter test test/login_test.dart
- 带覆盖率运行:flutter test --coverage
- 运行集成测试:flutter test integration_test/
- 更新黄金文件:flutter test --update-goldens
- 生成 Mock:flutter pub run build_runner build
- 指定平台测试:flutter test --platform chrome
pubspec.yaml 中需添加的 dev_dependencies 包括 flutter_test、integration_test、mockito ^5.4.0、build_runner ^2.4.0。
适用场景
- 为 Flutter 应用编写组件测试、集成测试或黄金测试。
- 进行视觉回归验证。
- 搭建端到端测试流程。
- 在真实设备上运行集成测试。
限制
资料未提供该技能的收费、价格、平台支持范围、具体效果指标等信息。高级模式、调试指南、CI/CD 集成与最佳实践需参考 reference/playbook.md,该文件内容暂未提供。