用途:为 Flutter 应用建立自动化测试体系,覆盖单元测试、Widget 测试与集成测试三类,以提升代码质量并防止回归。
主要能力:单元测试验证单个函数、方法或类的正确性,需 mock 全部外部依赖,不涉及磁盘 I/O、屏幕渲染或外部用户操作,使用 test 或 flutter_test 包执行。Widget 测试验证单个组件的 UI 外观与交互,通过 WidgetTester 提供组件生命周期上下文,用 Finder 定位组件、Matcher 校验状态,无需启动完整应用。集成测试验证各部件协同工作并采集真机性能指标,需添加 integration_test 依赖,可在真机、系统模拟器或 Firebase Test Lab 上运行,优先覆盖路由、依赖注入与关键用户流程。
架构与插件:建议为每个 ViewModel、Service、Repository 编写单元测试,为所有 View 编写 Widget 测试;在测试 ViewModel 与 View 时优先使用 Fake 实现而非 mock 库。插件测试需结合 Dart 测试与原生测试:Android 用 android/src/test/ 下的 JUnit,iOS/macOS 用 example/ios/RunnerTests/ 与 example/macos/RunnerTests/ 下的 XCTest,Linux/Windows 用 linux/test/ 与 windows/test/ 下的 GoogleTest;原生 UI 交互可用 Espresso 或 XCUITest。
使用方式:移动端本地运行 flutter test integration_test/app_test.dart;Web 端先启动 chromedriver --port=4444,再运行 flutter drive --driver=test_driver/integration_test.dart --target=integration_test/app_test.dart -d chrome;Linux CI 用 xvfb-run flutter test integration_test/app_test.dart -d linux;Firebase Test Lab 需先构建 flutter build apk --debug 与 ./gradlew app:assembleAndroidTest,再上传 App APK 与 Test APK。
限制:资料未提供具体收费、价格与效果数据;若集成测试无法覆盖某流程,可用原生单元测试合成方法通道调用,并以 Dart 单元测试覆盖公开 API。