전체 글 171

안드로이드 테스트 코드를 배워보자 (3 - 2) 코루틴 테스트 - viewModelScope.launch 에서 테스트, 메인 디스패처 설정,

이전 글에서 이어집니다. https://sh1mj1-log.tistory.com/175 안드로이드 테스트 코드를 배워보자 (1) - liveData 테스트, 비동기 테스트 기본 안드로이드 앱을 개발할 때 여러 기업에서, 프로젝트에서 테스트 코드를 작성하는 것은 중요하다고 말합니다. 아예 앱을 개발할 때 Test code 를 먼저 작성하는 경우도 있죠. 실제로 카카오에서 티 sh1mj1-log.tistory.com https://sh1mj1-log.tistory.com/176 안드로이드 테스트 코드를 배워보자 (2) - Room Unit Test https://sh1mj1-log.tistory.com/175 안드로이드 테스트 코드를 배워보자 (1) - liveData 테스트, 비동기 테스트 기본 안드로이드..

Android/테스팅 2023.10.17

안드로이드 테스트 코드를 배워보자 (3 - 1) 코루틴 테스트 - runTest, TestDispatcher, 디스패처 주입

이전 글에서 이어집니다. https://sh1mj1-log.tistory.com/175 안드로이드 테스트 코드를 배워보자 (1) - liveData 테스트, 비동기 테스트 기본 안드로이드 앱을 개발할 때 여러 기업에서, 프로젝트에서 테스트 코드를 작성하는 것은 중요하다고 말합니다. 아예 앱을 개발할 때 Test code 를 먼저 작성하는 경우도 있죠. 실제로 카카오에서 티 sh1mj1-log.tistory.com https://sh1mj1-log.tistory.com/176 안드로이드 테스트 코드를 배워보자 (2) - Room Unit Test https://sh1mj1-log.tistory.com/175 안드로이드 테스트 코드를 배워보자 (1) - liveData 테스트, 비동기 테스트 기본 안드로이드..

Android/테스팅 2023.10.13

안드로이드 테스트 코드를 배워보자 (2) Room Unit Test

https://sh1mj1-log.tistory.com/175 안드로이드 테스트 코드를 배워보자 (1) - liveData 테스트, 비동기 테스트 기본 안드로이드 앱을 개발할 때 여러 기업에서, 프로젝트에서 테스트 코드를 작성하는 것은 중요하다고 말합니다. 아예 앱을 개발할 때 Test code 를 먼저 작성하는 경우도 있죠. 실제로 카카오에서 티 sh1mj1-log.tistory.com 이전 글에서 이어집니다. Room Unit Test - ViewModel, LiveData 등 사용 Room DB 는 안드로이드 Jetpack Components 입니다. 그러므로 안드로이드 종속성이 필요합니다. 안드로이드 개발자 문서 - Room 지속성 라이브러리는 SQLite에 추상화 계층을 제공하여 SQLite를 ..

Android/테스팅 2023.10.10

안드로이드 테스트 코드를 배워보자 (1) liveData 테스트, 비동기 테스트 기본

안드로이드 앱을 개발할 때 여러 기업에서, 프로젝트에서 테스트 코드를 작성하는 것은 중요하다고 말합니다. 아예 앱을 개발할 때 Test code 를 먼저 작성하는 경우도 있죠. 실제로 카카오에서 티스토리 앱을 개발하시는 개발자 분의 기술 글에서 테스트를 해야 하는 이유를 이렇게 말하고 있습니다. (기술 글 출처) 개발 과정에서 문제를 미리 발견할 수 있다. 리팩토링을 안심하고 할 수 있다. 빠른 시간 내에 코드의 동작 방식과 결과를 확인할 수 있다. 좋은 테스트 코드를 연습하다 보면 자연스럽게 좋은 코드가 만들어진다. 의도한 대로 동작되는 것을 자신감 있게 말할 수 있다. 애자일 방법론의 도입! 로버트 C. 마틴은 이렇게 말했습니다. 기술 실천 방법 없이 애자일을 도입하려는 시도는 실패할 수밖에 없다.”..

Android/테스팅 2023.10.08

[코틀린] 그래서 코루틴이 뭔데?

코틀린을 이용해서 안드로이드 앱 개발을 하다 보면 비동기 프로그래밍을 위해서 코루틴을 흔하게 사용하게 됩니다. 또 코틀린으로 스프링 프레임워크를 이용해서 서버를 구축할 때도 코루틴을 자주 사용하게 되지요. 그런데 코루틴에 대해 정말로 자세히 알고 있는 사람은 많지 않습니다. 코루틴은 간단하게 사용할 수 있지만 깊고 자세하게 알고 있는 사람은 잘 없는데, 그만큼 코루틴을 쉽게 사용할 수 있도록 잘 만들었다는 것이겠죠? 아무튼 코루틴에 대해 자세히 알아보겠습니다. 코루틴(Coroutine) 코루틴은 일단 비동기 프로그래밍 및 동시성 작업을 효율적으로 다룰 수 있는 기능을 제공하는 라이브러리와 언어 기능입니다. 사실 코루틴은 코틀린에 종속적인 기술은 아니고 C#, JS, Python, Go 같은 언어에서도 지..

Kotlin 2023.10.04

헤더에 다른 토큰을 넣는 동작에 따라 API, Interceptor 분리

이전 글 https://sh1mj1-log.tistory.com/164 안드로이드 레트로핏 api 호출하는 인터페이스에서 @Header 중복을 제거하기 지난 4개월 전쯤 친구를 통해서 여러 다른 분들과 플레이스토어에 바바-BABA 라는 앱을 출시했습니다. 작성했던 코드들을 천천히 보면서 리팩토링 및 버그 픽스를 하며 공부를 더 해보려고 합니 sh1mj1-log.tistory.com 이전 글 '안드로이드 레트로핏 api ... 인터페이스에서 @Header 제거하기' 글에서 이어집니다. 이전 글에서는 api 중에서 헤더에 access token을 넣는 api call 인터페이스와 헤더에 엑세스 토큰을 넣지 않는 인터페이스가 있었습니다. 그런데 이제는 헤더에 sign token 을 넣는 api call 이 추..

MVC, MVP, MVVM 봐도 봐도 조금씩 헷갈리면 모르는 거임

안드로이드에서 유명한 패턴인데 봐도 봐도 조금씩 헷갈리는 것 같아서 제대로 정리를 할 필요성을 느껴 정리합니다. MVC(Model - View - Controller) 패턴 MVC 패턴은 다른 소프트웨어 개발에서 많이 사용되는 디자인 패턴입니다. 당연히 안드로이드 앱 개발에서도 많이 사용됩니다. MVC 패턴은 앱을 세 가지의 주요 컴포넌트로 나누어서 관리하며, 각 컴포넌트는 다른 역할을 수행합니다. Model - MVC Model 은 데이터와 데이터 관련 로직을 포함하는 컴포넌트. 데이터는 앱의 핵심 데이터나 상태. 안드로이드 앱에서의 Model 은 데이터베이스나 네트워크 요청 결과, 앱의 상태 등을 포함할 수 있음. Model 은 주로 데이터를 가져오고 저장하며, 데이터의 유효성 검증을 하고 가공할 수..

Android/Theory 2023.10.02

디자인 패턴 - 동적 프록시(Dynamic Proxy). 동적 프록시 직접 구현해보고 Retrofit 의 create 다시 보기

이전 '디자인 패턴 프록시 패턴 글' 에서 Proxy pattern(프록시 패턴)에 대해 알아 보았습니다. 그리고 'Retrofit 알아보기 (2) - create 뜯어보기' 에서도 프록시 패턴을 사용하는 부분이 나왔었죠. https://sh1mj1-log.tistory.com/169 디자인 패턴 - 프록시 패턴(Proxy pattern) 자바 코드 예시로 보기 먼저 프록시(proxy)의 뜻을 살펴봅시다. 위처럼 proxy 는 대리, 대리인, 대용물 이라는 뜻을 가집니다. 그렇다면 프록시 패턴이라 하면, 누군가가 어떠한 일(역할)을 대신 해주는 모습의 디자인 패턴 sh1mj1-log.tistory.com https://sh1mj1-log.tistory.com/168 안드로이드 통신에 자주 사용하는 Ret..

디자인 패턴 - 프록시 패턴(Proxy pattern) 자바 코드 예시로 보기

먼저 프록시(proxy)의 뜻을 살펴봅시다. 위처럼 proxy 는 대리, 대리인, 대용물 이라는 뜻을 가집니다. 그렇다면 프록시 패턴이라 하면, 누군가가 어떠한 일(역할)을 대신 해주는 모습의 디자인 패턴임을 예상할 수 있겠네요. Proxy pattern(프록시 패턴) 프록시 패턴은 클라이언트가 실제 서비스 객체를 대신하는 객체를 제공해주는 구조 디자인 패턴입니다. 클라이언트의 요청을 수신하고 일부 작업들을 수행한 다음 요청을 서비스 객체에 전달하는 형태이지요. 여기서 일부 작업들에는 흔히 접근 제어, 캐싱 등이 있습니다. 프록시 객체는 서비스 객체와 같은 인터페이스를 가지기 때문에 클라이언트에 전달되면 실제 객체와 상호적으로 교환이 가능합니다. 우리가 코드를 변경할 수 없는 클래스에 몇가지의 행동들을 ..

안드로이드 통신에 자주 사용하는 Retrofit 알아보기 (2) - create 뜯어보기

이전 글에서 이어집니다. https://sh1mj1-log.tistory.com/167 안드로이드 통신에 자주 사용하는 Retrofit 알아보기 (1) - HttpURLConnection, OkHttp, Retrofit 장점을 중심 Jwt 토큰 관련해서 프로젝트의 버그 픽스, 간단한 리팩토링(리팩토링이라고 하기도 뭐하지만) 을 진행하면서 이 김에 Retrofit 클래스의 내부 구조에 대해서 조금 이해를 해야 할 필요가 있을 것 같 sh1mj1-log.tistory.com 이번에는 Retrofit 을 사용해서 서버와 통신을 할 때 Retrofit 클래스 내부가 어떻게 구현이 되어 있는지에 대해 조금 더 자세히 알아보겠습니다. Retrofit 클래스 이전 글(안드로이드 통신에 ... Retrofit 장점을 ..