도리안의 2025년 개발기 #174 - 유닛 테스트에서 발생했던 API 연동 오류
유닛 테스트에서 발생했던 API 연동 오류
오늘의 개발기
나는 개발하면서 유닛 테스트를 하고 있고, 특별한 문제가 없는 한 그렇게 하고 있다. 이번에 개발하는 앱은 동료가 개발했던 것이라 테스트 환경을 새로 구성했다. API 연동 함수들을 만들었고, 그 중 하나를 테스트 했다. 결과는...... 아래와 같은 오류가 발생했다.
NetworkError(networkErrorType=SerializationError, messageTitle=null, message=Fields [mission_idx, mission_name, mission_desc, reward_ticket, icon_path, status, progress_rate] are required for type with serial name '(package).EventMissionEntity', but they were missing at path: $.result.data.result.lists[0])
그냥 봐서는 뭐가 잘못되었는지 이해할 수 없었다. 도대체 무엇이 잘못된 것인지... 나중에 알게 된 원인은 API 연동 함수의 리턴 타입이 잘못되었기 때문이었다. API가 여러개 있었고, 응답 JSON 데이터들의 포맷들이 비슷했다. 이들의 데이터 클래스 이름들도 비슷할 수 밖에 없었고, 혼동스러울 수 밖에 없었다. 유닛 테스트 단계에서 머물러 있었다면, 개발이 진행되지 않는 문제가 있었다. 일단 화면에서 데이터를 읽는 코드를 작성하고 디버그 테스트를 해보았다. 그 과정에서 API 연동 함수의 리턴 타입이 잘못되었다는 것을 알았다. 엉뚱한 타입을 선택한 것이었다. 다행히 원인을 빨리 찾고 해결했다.
과거를 되돌아보니 위와 같은 NetworkError는 경험한 적이 없었다. 최근 1년 동안에는 여러 API들을 한꺼번에 연동할 필요가 없었기 때문이었다. 하나씩 구현하면 되었으니 그런 오류를 만날 기회조차 없었다. 이번 시행착오를 앞으로도 또 겪을 수 있으니 잘 정리해 두자.
지난 2025년 개발기
- #173 - 안드로이드 스튜디오의 Gemini가 유용한 점
- #172 - 이번 개발이 벅차다는 생각이 드는 이유는 뭘까? 해결책은 있을까?
- #171 - 오늘 개발하며 드는 생각
- #170 - 이벤트와 이벤트 미션을 헷갈려서 짓기 어려웠던 데이터 클래스 이름들
- #169 - 일부 API 공개 그리고 데이터 클래스 작성
- #168 - 표류하는 듯 헤매는 월요일
- #167 - 다시 팀장이 될 수 있을까?
- #166 - 개발기 작성에 대한 고민
- #165 - 조직개편을 앞두고...
- #164 - 다운로드 관련 오류 일단락 (안드로이드)
- #163 - 다운로드 관련 오류 거의 다 해결 (안드로이드)
- #162 - 다운로드 관련 오류 해결 중 (안드로이드)
- #161 - 다운로드 화면 업데이트는 왜 안 되는 걸까? (안드로이드)
- #160 - API를 기다리지 않고 먼저 화면 개발을 한 것은 이번 직장에서 사실상 처음
- #159 - 오늘 손코딩 하면서 느낀 점
- #158 - 당분간 신규 화면의 프리뷰 구현 예정
- #157 - 안드로이드에서 추가 요구 사항: 16KB 페이지 크기 지원
- #156 - 추가 요구사항이 나왔다
- #155 - 프리뷰의 화면이 실제 기기의 그것과 다르게 나오기도...
- #154 - 수면 부족으로 인한 컨디션 저하
- #153 - 홈 전용 API 적용시 발생할 수 있는 문제점
- #152 - 홈 화면 전용 API를 만드는 게 좋을까?
- #151 - 이해한줄 알았지만 잠시 잊어먹은 Hilt
- #1 ~ #150
Posted through the ECblog app (https://blog.etain.club)
안녕하세요.
SteemitKorea팀에서 제공하는 'steemit-enhancer'를 사용해 주셔서 감사합니다. 개선 사항이 있으면 언제나 저에게 연락을 주시면 되고, 관심이 있으신 분들은 https://cafe.naver.com/steemitkorea/425 에서 받아보실 수 있습니다. 사용시 @응원해 가 포함이 되며, 악용시에는 모든 서비스에서 제외될 수 있음을 알려드립니다.
안녕하세요.
이 글은 SteemitKorea팀(@ayogom)님께서 저자이신 @dorian-dev님을 응원하는 글입니다.
소정의 보팅을 해드렸습니다 ^^ 항상 좋은글 부탁드립니다
SteemitKorea팀에서는 보다 즐거운 steemit 생활을 위해 노력하고 있습니다.
이 글은 다음날 다시 한번 포스팅을 통해 소개 될 예정입니다. 감사합니다!
Upvoted! Thank you for supporting witness @jswit.