Files
lunchpick/doc/06_testing/flutter_test_failures.md
2025-11-19 16:36:39 +09:00

2.9 KiB
Raw Blame History

Flutter Test Failures 2025-XX-XX

TL;DR

  • 해결 완료: test/integration/naver_api_integration_test.dart의 “NaverMapParser - 동시성 및 리소스 관리 - 리소스 정리 확인”이 dispose 이후에도 성공을 반환하던 문제가 수정되었습니다.
  • 수정 내용: NaverMapParserdispose() 호출 뒤 _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)
실제 parseRestaurantFromUrlRestaurant 인스턴스를 반환하여 Future가 성공적으로 완료됨
로그 Expected: throws anything, Actual: ... emitted <Instance of 'Restaurant'>

의심 원인

  1. 샘플/시드 데이터 추가 최근 추가된 ManualRestaurantSamples/SampleDataInitializer가 지도 파서의 동작 경로를 바꾸지는 않지만, 테스트 스텁이 더 이상 에러를 내지 않고 정상 데이터를 반환하도록 수정되었을 가능성.
  2. 네이버 파서 구현 변경 _parseWithLocalSearch 또는 GraphQL fallback 로직이 보강되면서, 과거에는 에러가 발생하던 케이스도 이제는 성공으로 처리되는 것으로 추정.

해야 할 일

  1. 전체 스위트 재실행

    • 이번 수정은 특정 테스트만 확인했으므로, flutter test 전체를 다시 돌려 다른 회귀가 없는지 확인합니다.
  2. Mock/Stubs 정리 (기존 TODO 유지)

    • flutter analyze가 여전히 test/mocks/mock_naver_api_client.dart의 override 경고를 보고하므로, 모킹 계층을 최신 구현과 맞춰 조정해야 합니다.
  3. 회귀 방지

    • dispose 상태 확인 로직을 다른 리소스 보유 클래스에도 적용 가능한지 검토하고, 유사 패턴의 테스트를 추가하는 것이 좋습니다.

참고 사항

  • flutter analyze 또한 160개의 info/warning을 내고 있으며, test/mocks/mock_naver_api_client.dartoverride_on_non_overriding_member 경고가 존재합니다. 위 이슈를 고치는 과정에서 함께 손볼 것을 권장합니다.
  • 새로 추가된 샘플 데이터가 방문 이력까지 시드하므로 테스트 환경에 영향을 줄 수 있습니다. 필요 시 테스트에서 Hive 박스를 mock하거나 초기화를 제어하세요.