코드리뷰테스트디버깅by affaan-m
플러터 테스트
플러터/다트 테스트를 실행하고 실패를 보고하며 테스트 문제를 점진적으로 수정합니다.
한 줄 평가 — 다음 사람 도와주세요
언제 쓰나
단위, 위젯, 골든, 통합 테스트를 할 때 사용합니다.
SKILL.md
Lattice 한국어 번역 · 원본 affaan-m/everything-claude-code (841beea). 복사 → 저장하면 Claude Code가 인식합니다.
---
description: Flutter/Dart 테스트를 실행하고, 실패를 보고하며, 테스트 문제를 점진적으로 해결합니다. 유닛, 위젯, 골든, 통합 테스트를 포함합니다.
---
# Flutter Test
이 명령어는 Flutter 테스트 스위트를 실행하고 결과를 보고합니다. 실패가 발생하면 문제를 진단하고 점진적으로 해결합니다.
## What This Command Does
1. **테스트 실행**: `flutter test`를 실행합니다 (또는 변경된 파일로 범위를 지정합니다).
2. **실패 분석**: 유형 및 원인별로 실패한 테스트를 식별합니다.
3. **점진적 해결**: 가능한 경우 한 번에 하나의 실패를 해결합니다.
4. **확인**: 각 수정 후 다시 실행합니다.
5. **보고**: 커버리지 요약 및 남은 실패를 표시합니다.
## When to Use
다음과 같은 경우 `/flutter-test`를 사용하세요:
- 기능 구현 후 아무것도 손상되지 않았는지 확인하고자 할 때
- 테스트가 통과하는지 확인하기 위해 `/flutter-build`를 실행한 후
- 새 코드의 테스트 커버리지를 확인하고자 할 때
- 특정 테스트 파일이 실패할 때
- PR을 제출하기 전에
## Commands Run
```bash
# Run all tests
flutter test 2>&1
# Run with coverage
flutter test --coverage 2>&1
# Run specific test file
flutter test test/unit/domain/usecases/get_user_test.dart 2>&1
# Run tests matching a name pattern
flutter test --name "CartBloc" 2>&1
# Run integration tests (requires device/emulator)
flutter test integration_test/ 2>&1
# Update golden files when intentional visual changes are made
flutter test --update-goldens 2>&1
```
## Example Session
````text
User: /flutter-test
Agent:
# Flutter Test Run
## Test Execution
```
$ 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'
```
## Fix 1: Repository Test
File: test/unit/data/user_repository_test.dart
Failure: `getById` returns a user when it should return null for missing ID
Root cause: Test setup adds a user with ID 'test-id' but queries with 'missing-id'.
Fix: Updated test to query with 'missing-id' — setup was correct, query was wrong.
```
$ flutter test test/unit/data/user_repository_test.dart
1 test passed.
```
## Fix 2: Widget Test
File: test/widget/cart_page_test.dart
Failure: Empty state text widget not found
Root cause: Empty state message was renamed from 'Your cart is empty' to 'Cart is empty' in the widget.
Fix: Updated test string to match current widget copy.
```
$ flutter test test/widget/cart_page_test.dart
1 test passed.
```
## Final Run
```
$ flutter test --coverage
All 44 tests passed.
Coverage: 84.2% (target: 80%)
```
## Summary
| Metric | Value |
|--------|-------|
| Total tests | 44 |
| Passed | 44 |
| Failed | 0 |
| Coverage | 84.2% |
Test Status: PASS ✓
````
## Common Test Failures
| 실패 | 일반적인 해결책 |
|---------|-------------|
| `Expected: <X> Actual: <Y>` | 단언(assertion) 업데이트 또는 구현 수정 |
| `Widget not found` | 파인더 셀렉터 수정 또는 위젯 이름 변경 후 테스트 업데이트 |
| `Golden file not found` | 생성을 위해 `flutter test --update-goldens` 실행 |
| `Golden mismatch` | 차이점 검사; 변경이 의도적이었다면 `--update-goldens` 실행 |
| `MissingPluginException` | 테스트 설정에서 플랫폼 채널 모의(mock) |
| `LateInitializationError` | `setUp()`에서 `late` 필드 초기화 |
| `pumpAndSettle timed out` | 명시적인 `pump(Duration)` 호출로 교체 |
## Related Commands
- `/flutter-build` — 테스트 실행 전 빌드 오류 수정
- `/flutter-review` — 테스트 통과 후 코드 검토
- `tdd-workflow` skill — 테스트 주도 개발 워크플로우
## Related
- Agent: `agents/flutter-reviewer.md`
- Agent: `agents/dart-build-resolver.md`
- Skill: `skills/flutter-dart-code-review/`
- Rules: `rules/dart/testing.md`필요한 도구
호버하면 설명CC
설치 + 호출 (2단계)
Claude Code CLI 기준.
- 1
SKILL.md 저장
아래 버튼으로 복사 → 다음 경로로 저장.
~/.claude/skills/everything-claude-code-114/SKILL.md - 2
호출
Claude Code 채팅창에서 자연어로 부르면 자동 발동:
예) 단위
트리거가 안 잡히면 SKILL.md의
description줄에 더 구체적인 한국어 키워드를 추가해보세요.