跳转至

Flutter 测试

此命令运行 Flutter 测试套件并报告结果。如果发生失败,将诊断问题并增量修复。

此命令如何工作

  1. 运行测试: 执行 flutter test(或限定到已更改的文件)
  2. 分析失败: 按类型和原因识别失败的测试
  3. 增量修复: 尽可能一次修复一个失败
  4. 验证: 每次修复后重新运行
  5. 报告: 显示覆盖率摘要和剩余失败

使用时机

/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