84 lines
2.9 KiB
Markdown
84 lines
2.9 KiB
Markdown
# Milestone: Native 단위 테스트 확장
|
|
|
|
## 위치
|
|
|
|
- Roadmap: `agent-ops/roadmap/ROADMAP.md`
|
|
- Phase: `agent-ops/roadmap/phase/android-runtime-confidence/PHASE.md`
|
|
|
|
## 목표
|
|
|
|
Android native runtime의 핵심 helper와 method contract를 단위 테스트로 검증한다. 단순 platform version boilerplate 테스트를 넘어 payload, token, signing key, storage, helper behavior를 변경 위험에 맞게 확인한다.
|
|
|
|
## 상태
|
|
|
|
[계획]
|
|
|
|
## 구현 잠금
|
|
|
|
- 상태: 해제
|
|
- 결정 필요: 없음
|
|
|
|
## 범위
|
|
|
|
- Android plugin method call contract 테스트
|
|
- payload parsing과 fallback 기준 테스트
|
|
- token/signing key 저장과 조회 테스트
|
|
- Room 또는 helper 계층의 테스트 가능성 개선
|
|
|
|
## 필수 기능
|
|
|
|
### Epic: [method-contract] Method Channel 계약
|
|
|
|
Flutter Dart API가 호출하는 native method의 입력/출력 계약을 검증한다.
|
|
|
|
- [ ] [save-token] `saveDeviceToken` 입력 검증과 저장 호출을 테스트한다
|
|
- [ ] [get-token] `getDeviceToken` 반환 계약을 테스트한다
|
|
- [ ] [auth-token] `setAuthToken`과 `clearAuthToken` 계약을 테스트한다
|
|
- [ ] [signing-key] `setSigningKey` 저장 계약을 테스트한다
|
|
|
|
### Epic: [payload] Payload 처리
|
|
|
|
Mattermost push payload key와 fallback 규칙을 안정적으로 유지한다.
|
|
|
|
- [ ] [intent-payload] intent extras가 opened event payload로 변환되는지 테스트한다
|
|
- [ ] [snake-case] `server_url`, `channel_id`, `root_id`, `is_crt_enabled` key 호환을 유지한다
|
|
- [ ] [missing-server] `server_url` 누락 시 fallback 정책을 테스트한다
|
|
|
|
### Epic: [storage] 저장 계층
|
|
|
|
테스트하기 어려운 저장 경로를 작게 분리한다.
|
|
|
|
- [ ] [db-boundary] Room/DatabaseHelper 테스트 경계를 정리한다
|
|
- [ ] [prefs-boundary] SharedPreferences signing key 저장 경계를 테스트한다
|
|
- [ ] [test-fixtures] native unit test fixture를 추가한다
|
|
|
|
## 완료 기준
|
|
|
|
- [ ] Android native test가 platform version boilerplate 이상의 plugin 계약을 검증한다
|
|
- [ ] token, auth token, signing key 경로가 테스트로 보호된다
|
|
- [ ] payload key 변경 시 테스트가 실패할 수 있다
|
|
- [ ] Android unit test 실행 방법이 문서와 일치한다
|
|
|
|
## 완료 리뷰
|
|
|
|
- 상태: 없음
|
|
- 요청일: 없음
|
|
- 완료 근거: 없음
|
|
- 리뷰 필요:
|
|
- [ ] 사용자가 완료 결과를 확인했다
|
|
- [ ] archive 이동을 승인했다
|
|
- 리뷰 코멘트: 없음
|
|
|
|
## 범위 제외
|
|
|
|
- 실제 FCM 수신 E2E
|
|
- 실제 Mattermost 서버 ACK
|
|
- iOS/macOS native 테스트
|
|
|
|
## 작업 컨텍스트
|
|
|
|
- 관련 경로: `android/src/main/**`, `android/src/test/**`, `example/android/**`
|
|
- 표준선(선택): native unit test는 외부 Firebase/Mattermost 네트워크 없이 deterministic하게 유지한다
|
|
- 선행 작업: 품질 게이트 자동화
|
|
- 후속 작업: 알림 액션 흐름 검증, ACK와 네트워크 회복성 검증
|
|
- 확인 필요: 없음
|