SuperAPI AI 工具集

flutter-testing-skill

测试与质量

查看项目

更新于 10-15 14:28

技能介绍

用途

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,该文件内容暂未提供。