# 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와 네트워크 회복성 검증 - 확인 필요: 없음