배경
현재 테스트는 52개(라우터 테스트 추가 후)지만, 두 가지 구멍이 있다.
1. CI가 테스트 실패를 막지 않는다
.github/workflows/flutter-ci.yaml 의 테스트 스텝에 continue-on-error: true 가 붙어 있다.
- name: Run tests
run: fvm flutter test
continue-on-error: true
테스트가 깨져도 CI는 초록불이 뜬다. 실제로 이 상태에서 #261(예약/취소 single-flight 키 누락) 회귀가 작업 트리에 들어와 테스트 2개가 실패하고 있었지만 아무도 알아채지 못했다. 테스트를 52개 짜놓고 게이트를 꺼둔 셈.
flutter analyze 스텝에도 같은 플래그가 있다.
2. 라우팅과 인증 게이트를 아무도 검증하지 않는다
appRouter 경로에 오타가 나거나 redirect 조건이 틀어져도 기존 테스트 52개는 전부 통과하고 앱만 흰 화면이 된다. 인증 게이트(세션 없으면 로그인으로) 역시 검증된 적이 없다.
원인은 appRouter 의 redirect 가 top-level const _storage = FlutterSecureStorage() 를 직접 잡고 있어서, 기기 없이는 테스트 자체가 불가능했다는 점.
작업 내용
비고
에뮬레이터가 필요한 integration_test/ 대신 기존 flutter test 에서 그대로 도는 유닛 테스트로 작성한다. CI가 ubuntu-latest 라 에뮬레이터가 없고, #261/#256/타임존/재시도 같은 실제 버그들은 통합 테스트로는 결정적으로 재현되지 않는다.
배경
현재 테스트는 52개(라우터 테스트 추가 후)지만, 두 가지 구멍이 있다.
1. CI가 테스트 실패를 막지 않는다
.github/workflows/flutter-ci.yaml의 테스트 스텝에continue-on-error: true가 붙어 있다.테스트가 깨져도 CI는 초록불이 뜬다. 실제로 이 상태에서 #261(예약/취소 single-flight 키 누락) 회귀가 작업 트리에 들어와 테스트 2개가 실패하고 있었지만 아무도 알아채지 못했다. 테스트를 52개 짜놓고 게이트를 꺼둔 셈.
flutter analyze스텝에도 같은 플래그가 있다.2. 라우팅과 인증 게이트를 아무도 검증하지 않는다
appRouter경로에 오타가 나거나 redirect 조건이 틀어져도 기존 테스트 52개는 전부 통과하고 앱만 흰 화면이 된다. 인증 게이트(세션 없으면 로그인으로) 역시 검증된 적이 없다.원인은
appRouter의redirect가 top-levelconst _storage = FlutterSecureStorage()를 직접 잡고 있어서, 기기 없이는 테스트 자체가 불가능했다는 점.작업 내용
app_router.dart에서 리다이렉트 판단부만 순수 함수resolveAuthRedirect로 분리 (저장소 읽기/토큰 삭제 부수효과는 라우터에 유지, 동작 동일)test/core/router_test.dart추가appRouter.configuration을 순회해 8개 경로 등록 확인flutter-ci.yaml테스트/분석 스텝에서continue-on-error: true제거비고
에뮬레이터가 필요한
integration_test/대신 기존flutter test에서 그대로 도는 유닛 테스트로 작성한다. CI가ubuntu-latest라 에뮬레이터가 없고, #261/#256/타임존/재시도 같은 실제 버그들은 통합 테스트로는 결정적으로 재현되지 않는다.