test-flutterlisted
Install: claude install-skill chenyynx/claudio
# Flutter App テスト
## 実行手順
以下を順番に実行し、全てパスすることを確認する。
### 1. 静的解析
```bash
dart analyze apps/mobile
```
warning 以上は修正する。info レベルは必要に応じて対応。
**MCP代替:** `mcp__dart-mcp__analyze_files` でも実行可能だが、CLI推奨。
### 2. フォーマット
```bash
dart format apps/mobile
```
### 3. ユニットテスト
```bash
cd apps/mobile && flutter test
```
特定ファイルのみ:
```bash
cd apps/mobile && flutter test test/<filename>_test.dart
```
**MCP代替:** `mcp__dart-mcp__run_tests` でも実行可能だが、CLI推奨。
MCP版はDTD接続不要な操作のため、CLIの方が効率的。
## テスト記述規約
### ファイル配置・命名
- テストファイルは `apps/mobile/test/` に配置
- 命名: `<対象の概念>_test.dart`
- ウィジェットテスト例: `approval_bar_test.dart`, `chat_input_bar_test.dart`
- ロジックテスト例: `chat_message_handler_test.dart`
### import
```dart
import 'package:flutter_test/flutter_test.dart';
import 'package:ccpocket/...';
```
### テスト構造
```dart
void main() {
group('対象クラスまたは機能', () {
test('動作の説明', () {
// ロジックテスト
expect(actual, expected);
});
testWidgets('UI動作の説明', (tester) async {
// ウィジェットテスト
await tester.pumpWidget(MaterialApp(home: TargetWidget()));
expect(find.text('expected'), findsOneWidget);
});
});
}
```
- `group` で対象機能ごとにグルーピング
- ロジックテストは `test()`、UI テストは `testWidgets()` を使い分ける
- `setUp()` でテスト前の共通初期化を行う
### テスト対象の方針
- **ウィジェットテスト**: 画面の表示・インタラクション検証
- `pumpWidget` でウィジェット構築 → `find` で要素確認 → `tap`/`enterText` で操作
- **ロジックテスト**: サービス・ハンドラーの振る舞い検証
- 純粋なDartクラスのメソッド呼び出しと結果確認
- WebSocket通信やBridge接続のモックが必要なテストは避ける (E2E領域)
### 既存テストファイル一覧
- `approval_bar_test.dart