2.9 KiB
2.9 KiB
Flutter Test Failures – 2025-XX-XX
TL;DR
- 해결 완료:
test/integration/naver_api_integration_test.dart의 “NaverMapParser - 동시성 및 리소스 관리 - 리소스 정리 확인”이 dispose 이후에도 성공을 반환하던 문제가 수정되었습니다. - 수정 내용:
NaverMapParser가dispose()호출 뒤_isDisposed플래그를 설정하고, 이후parseRestaurantFromUrl이 호출되면NaverMapParseException('이미 dispose된 파서입니다')를 던지도록 변경했습니다 (lib/data/datasources/remote/naver_map_parser.dart). - 단위 재현 테스트:
flutter test test/integration/naver_api_integration_test.dart \ --plain-name '리소스 정리 확인' - 위 명령은 정상 통과했으며, 전체 스위트는 별도로 재실행해야 합니다.
Failing Spec
| 항목 | 내용 |
|---|---|
| 파일 | test/integration/naver_api_integration_test.dart |
| 라인 | 342-355 (테스트 이름: NaverMapParser - 동시성 및 리소스 관리 리소스 정리 확인) |
| 기대 | expect(() => parser.parseRestaurantFromUrl(...), throwsAnything) |
| 실제 | parseRestaurantFromUrl가 Restaurant 인스턴스를 반환하여 Future가 성공적으로 완료됨 |
| 로그 | Expected: throws anything, Actual: ... emitted <Instance of 'Restaurant'> |
의심 원인
- 샘플/시드 데이터 추가 – 최근 추가된
ManualRestaurantSamples/SampleDataInitializer가 지도 파서의 동작 경로를 바꾸지는 않지만, 테스트 스텁이 더 이상 에러를 내지 않고 정상 데이터를 반환하도록 수정되었을 가능성. - 네이버 파서 구현 변경 –
_parseWithLocalSearch또는 GraphQL fallback 로직이 보강되면서, 과거에는 에러가 발생하던 케이스도 이제는 성공으로 처리되는 것으로 추정.
해야 할 일
-
전체 스위트 재실행
- 이번 수정은 특정 테스트만 확인했으므로,
flutter test전체를 다시 돌려 다른 회귀가 없는지 확인합니다.
- 이번 수정은 특정 테스트만 확인했으므로,
-
Mock/Stubs 정리 (기존 TODO 유지)
flutter analyze가 여전히test/mocks/mock_naver_api_client.dart의 override 경고를 보고하므로, 모킹 계층을 최신 구현과 맞춰 조정해야 합니다.
-
회귀 방지
- dispose 상태 확인 로직을 다른 리소스 보유 클래스에도 적용 가능한지 검토하고, 유사 패턴의 테스트를 추가하는 것이 좋습니다.
참고 사항
flutter analyze또한 160개의 info/warning을 내고 있으며,test/mocks/mock_naver_api_client.dart의override_on_non_overriding_member경고가 존재합니다. 위 이슈를 고치는 과정에서 함께 손볼 것을 권장합니다.- 새로 추가된 샘플 데이터가 방문 이력까지 시드하므로 테스트 환경에 영향을 줄 수 있습니다. 필요 시 테스트에서 Hive 박스를 mock하거나 초기화를 제어하세요.