어떤 기능인가요?
Room DAO의 SQL이 한 번도 실행되지 않은 상태입니다. ExerciseRecordLocalDataSourceTest는 DAO를 목킹해 호출 인자만 검증하고, 실제 DB를 띄우는 테스트는 없습니다.
#583이 DAO 테스트를 미룰 때 근거로 적은 것은 두 가지였습니다. 메모리 DB를 단위 테스트에서 열려면 Robolectric이 필요하고, CI가 testDebugUnitTest만 실행해서 androidTest에 두면 아무도 돌리지 않는다는 것입니다. 그리고 그때 미룬 조건이 "타이머와 CRUD 단계에서 다시 넣는다"였습니다. 지금 그 단계입니다.
앞으로 들어올 쿼리는 전송 대기 행 보존과 syncState 전이입니다. 틀려도 화면에 드러나지 않고 사용자가 오프라인에서 만든 데이터가 조용히 사라지는 종류입니다.
실행 위치는 단위 테스트로 둡니다. androidTest에 두면 #583이 지적한 문제가 그대로 반복됩니다. 비용은 Robolectric 의존성과 data 모듈 테스트 실행 시간 증가입니다.
현재 상태는 이렇습니다. 버전 카탈로그에 Robolectric이 없고, 라이브러리 컨벤션 플러그인은 단위 테스트에 junit, mockk, coroutines-test, turbine, arch-core-testing, truth만 넣습니다.
이 이슈는 테스트 기반과 지금 있는 쿼리 검증까지입니다. 타이머 DAO와 운동 기록 쓰기 DAO 테스트는 각 이슈에서 이 기반 위에 올립니다. 마이그레이션 테스트용 androidx-room-testing은 스키마 정책 이슈에서 함께 넣습니다. 지금은 쓸 곳이 없습니다.
작업 상세 내용
참고할만한 자료(선택)
오프라인 기능 지원 설계 문서 자동 테스트 절의 DAO 항목과 #583의 "DAO 테스트를 미뤘습니다" 절이 근거입니다. #593에서 data 모듈 단위 테스트가 하나 더 늘었습니다.
후속으로 #585의 경계 날짜 테스트, 타이머와 운동 기록 쓰기의 상태 전이 테스트, 스키마 재생성 정책 검증이 이 기반을 씁니다.
어떤 기능인가요?
Room DAO의 SQL이 한 번도 실행되지 않은 상태입니다.
ExerciseRecordLocalDataSourceTest는 DAO를 목킹해 호출 인자만 검증하고, 실제 DB를 띄우는 테스트는 없습니다.#583이 DAO 테스트를 미룰 때 근거로 적은 것은 두 가지였습니다. 메모리 DB를 단위 테스트에서 열려면 Robolectric이 필요하고, CI가
testDebugUnitTest만 실행해서 androidTest에 두면 아무도 돌리지 않는다는 것입니다. 그리고 그때 미룬 조건이 "타이머와 CRUD 단계에서 다시 넣는다"였습니다. 지금 그 단계입니다.앞으로 들어올 쿼리는 전송 대기 행 보존과
syncState전이입니다. 틀려도 화면에 드러나지 않고 사용자가 오프라인에서 만든 데이터가 조용히 사라지는 종류입니다.실행 위치는 단위 테스트로 둡니다. androidTest에 두면 #583이 지적한 문제가 그대로 반복됩니다. 비용은 Robolectric 의존성과 data 모듈 테스트 실행 시간 증가입니다.
현재 상태는 이렇습니다. 버전 카탈로그에 Robolectric이 없고, 라이브러리 컨벤션 플러그인은 단위 테스트에 junit, mockk, coroutines-test, turbine, arch-core-testing, truth만 넣습니다.
이 이슈는 테스트 기반과 지금 있는 쿼리 검증까지입니다. 타이머 DAO와 운동 기록 쓰기 DAO 테스트는 각 이슈에서 이 기반 위에 올립니다. 마이그레이션 테스트용
androidx-room-testing은 스키마 정책 이슈에서 함께 넣습니다. 지금은 쓸 곳이 없습니다.작업 상세 내용
ExerciseCountDao날짜 범위 조회 검증 (경계 날짜 포함)ExerciseRecordDao계정 조건 검증. 다른memberId행이 조회되지 않음getListByDate가DELETE_PENDING행을 제외하는지 검증replaceSyncedListByDate의 대기 행 보존을 실제 DB로 검증참고할만한 자료(선택)
오프라인 기능 지원 설계 문서 자동 테스트 절의 DAO 항목과 #583의 "DAO 테스트를 미뤘습니다" 절이 근거입니다. #593에서 data 모듈 단위 테스트가 하나 더 늘었습니다.
후속으로 #585의 경계 날짜 테스트, 타이머와 운동 기록 쓰기의 상태 전이 테스트, 스키마 재생성 정책 검증이 이 기반을 씁니다.