用途:为 Flutter 项目添加集成测试,并借助 MCP 交互探索把操作固化为测试。
环境配置:向 pubspec.yaml 添加开发依赖,命令为 flutter pub add 'dev:integration_test:{"sdk":"flutter"}' 和 flutter pub add 'dev:flutter_test:{"sdk":"flutter"}';在应用入口(如 lib/main.dart 或专用 lib/main_test.dart)导入 package:flutter_driver/driver_extension.dart 并在 runApp() 前调用 enableFlutterDriverExtension();为关键控件添加 ValueKey。
交互探索:使用 Dart/Flutter MCP 工具,以 target: "lib/main_test.dart" 执行 launch_app 获取 DTD URI;用 get_widget_tree 发现 Key、文本与控件类型;用 tap、enter_text、scroll 模拟流程;导航或动画后执行 waitFor,或用 get_health 校验状态;控件未挂载时可执行 scroll 或 scrollIntoView。
测试编写:在项目根目录建立 integration_test/ 目录,文件按 <name>_test.dart 命名;在 main() 开头调用 IntegrationTestWidgetsFlutterBinding.ensureInitialized();用 tester.pumpWidget(MyApp()) 加载界面,交互后用 tester.pumpAndSettle() 推进帧,用 expect(find.byKey(ValueKey('foo')), findsOneWidget) 等断言,用 tester.scrollUntilVisible 滚动到屏幕外控件;维护旧版 flutter_driver 测试时改用其 waitFor、tap、scroll 等 API。
执行与剖析:通过 flutter drive 执行,需要 test_driver/integration_test.dart 主机驱动脚本调用 integrationDriver()。Chrome 需先运行 chromedriver --port=4444,再执行 flutter drive --driver=test_driver/integration_test.dart --target=integration_test/app_test.dart -d chrome;无头 Web 用 -d web-server;Android 本地直接运行上述 drive 命令;Firebase Test Lab 需 flutter build apk --debug 与 ./gradlew app:assembleAndroidTest 后上传两个 APK。性能剖析可参考 perf_driver.dart 处理 timeline 数据。
限制:资料未提供对应价格、收费与平台支持信息;未提及具体版本兼容要求,需按项目实际情况确认。