Flutter 测试¶
此命令运行 Flutter 测试套件并报告结果。如果发生失败,将诊断问题并增量修复。
此命令如何工作¶
- 运行测试: 执行
flutter test(或限定到已更改的文件) - 分析失败: 按类型和原因识别失败的测试
- 增量修复: 尽可能一次修复一个失败
- 验证: 每次修复后重新运行
- 报告: 显示覆盖率摘要和剩余失败
使用时机¶
/flutter-test 的使用场景:
- 实现功能后确认没有破坏任何内容
- 在运行 /flutter-build 后确认测试通过
- 检查新代码的测试覆盖率
- 特定测试文件失败时
- 提交 PR 之前
执行的命令¶
# すべてのテストを実行
flutter test 2>&1
# カバレッジ付きで実行
flutter test --coverage 2>&1
# 特定のテストファイルを実行
flutter test test/unit/domain/usecases/get_user_test.dart 2>&1
# 名前パターンに一致するテストを実行
flutter test --name "CartBloc" 2>&1
# 統合テストを実行(デバイス/エミュレーターが必要)
flutter test integration_test/ 2>&1
# 意図的なビジュアル変更時にゴールデンファイルを更新
flutter test --update-goldens 2>&1
会话示例¶
User: /flutter-test
Agent:
# Flutterテスト実行
## テスト実行
```
$ flutter test
00:05 +42 -2: Some tests failed.
FAILED: test/unit/data/user_repository_test.dart
UserRepository getById
returns null when user not found
Expected: null
Actual: User(id: 'test-id', name: 'Test User')
FAILED: test/widget/cart_page_test.dart
CartPage
shows empty state when cart is empty
Expected: exactly one widget with text 'Your cart is empty'
Found: no widget with text 'Your cart is empty'
```
## 修正 1: リポジトリテスト
File: test/unit/data/user_repository_test.dart
失敗: `getById`が欠落IDに対してnullを返すべきところでユーザーを返す
根本原因: テストセットアップがID 'test-id' のユーザーを追加するが、'missing-id' でクエリしている。
修正: 'missing-id' でクエリするようテストを更新 — セットアップは正しく、クエリが間違っていた。
```
$ flutter test test/unit/data/user_repository_test.dart
1 test passed.
```
## 修正 2: ウィジェットテスト
File: test/widget/cart_page_test.dart
失敗: 空状態のテキストウィジェットが見つからない
根本原因: 空状態メッセージがウィジェット内で 'Your cart is empty' から 'Cart is empty' に変更されていた。
修正: 現在のウィジェットのコピーに合わせてテスト文字列を更新。
```
$ flutter test test/widget/cart_page_test.dart
1 test passed.
```
## 最終実行
```
$ flutter test --coverage
All 44 tests passed.
Coverage: 84.2% (target: 80%)
```
## サマリー
| メトリクス | 値 |
|-----------|-----|
| 総テスト数 | 44 |
| 成功 | 44 |
| 失敗 | 0 |
| カバレッジ | 84.2% |
テストステータス: PASS ✓
常见测试失败¶
| 失败 | 典型修复 |
|---|---|
Expected: <X> Actual: <Y> |
更新断言或修复实现 |
Widget not found |
修正查找器选择器,或在控件名称更改后更新测试 |
Golden file not found |
运行 flutter test --update-goldens 生成 |
Golden mismatch |
检查差异,如果更改是有意为之则运行 --update-goldens |
MissingPluginException |
在测试设置中模拟平台通道 |
LateInitializationError |
在 setUp() 中初始化 late 字段 |
pumpAndSettle timed out |
替换为显式的 pump(Duration) 调用 |
相关命令¶
/flutter-build— 在运行测试前修复构建错误/flutter-review— 在测试通过后审查代码tdd-workflow技能 — 测试驱动开发工作流
相关¶
- 代理:
agents/flutter-reviewer.md - 代理:
agents/dart-build-resolver.md - 技能:
skills/flutter-dart-code-review/ - 规则:
rules/dart/testing.md
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 ev/ECC