Mobile Engineering
-
[Android] Koin Test로 테스트 코드 작성하기Mobile Engineering 2020. 5. 12. 23:26
이 글은 이미 Koin 세팅을 하셨다는 전제하에 기술하였습니다. 아직 Koin을 세팅하지 않았다면 이전 세팅 방법에 대해서 포스팅을 참고하시기 바랍니다. https://simplifyprocess.tistory.com/5 이번에는 Koin을 사용해서 테스트 코드를 작성할때 사용하는 KoinTest에 대해서 기술하고자 합니다. Gradle 세팅 일단 어느 라이브러리를 사용하던지 gradle 세팅을 안할 수는 없겠죠. 이부분도 아주 간단합니다. 먼저 다음과 같이 MavenRepository에 jCenter를 추가합니다. // build.gradle at Project Level buildscript { repositories { jcenter() } } 그리고 Module Gradle에 KoinTest를 추..
-
[Android] Koin vs Dagger2Mobile Engineering 2020. 4. 21. 23:20
이전 아티클을 보시면 아래의 내용을 이해하는데 도움이 됩니다. Koin으로 의존성 주입하기 [ https://simplifyprocess.tistory.com/5 ] 오늘은 민감한 주제입니다. Koin vs Dagger2. Dagger는 안드로이드에서 가장 많이 사용되고 있는 DI Framework이고, 구글에서 직접 유지보수하는 오픈소스입니다. 하지만 두가지를 경험해본 저는 Koin에 손을 들어주고 싶습니다. 왜냐하면 서로 바라보는 지향점이 아주 다르고 Layering, 사용 편의성으로 따져봤을때 Koin이 더욱 우세하다고 생각합니다. Koin과 Dagger의 구동방식 이해를 돕기 위해 아래의 그림을 봅시다. 위 그럼처럼 Koin은 Module에서 선언한 DI를 Cache에 저장하고 있습니다. 그렇기 ..
-
[Android] Mockito Plugin 세팅 - MockMakerMobile Engineering 2020. 4. 19. 16:07
TDD를 해야 한다는 것은 굳이 설명할 필요가 없을 정도로 잘 알고 계시리라 생각합니다. 그중에서 DI 환경에서 테스트 코드를 작성할때 사용하는 Mock은 필수라고 할 수 있습니다. 그중에서 Mockito와 PowerMock을 많이 사용합니다. 개인적으로 테스트 코드를 작성할때 Mock 라이브러리는 심플하고 쉽게 사용할 수 있는 것을 선호해서 Mockito를 사용합니다. 안드로이드에서 Mockito를 이용해서 유닛 테스트 코드를 만들때 사전에 해줘야 하는 세팅을 알려드리고자 합니다. Mockito를 사용하는 분이라면 한번 맞닥뜨렸을 오류.. Could not initialize plugin: interface org.mockito.plugins.MockMaker 아래의 그림처럼 잘 나가다가 갑자기 오류가..
-
[Android] Koin으로 의존성 주입하기Mobile Engineering 2020. 4. 19. 15:19
요즘 안드로이드 프로젝트를 수행하면서 의존성 주입(DI - Dependency Injection)은 필수라 할 수 있습니다. 그래서 코틀린 환경에서 떠오르고 있는 DI Framework인 Koin에 대해서 이야기하고자 합니다. 1. Koin 세팅 최상단의 Project Gradle(ROOT/build.gradle)에 아래와 같이 설정을 추가합니다. buildscript { dependencies { classpath "org.koin:koin-gradle-plugin:$koin_version" } } 그리고 Koin을 사용하는 Module의 Gradle(app/build.gradle)에 아래와 같이 설정을 추가합니다. apply plugin: 'koin' android { packagingOptions ..
-
[Android] No static method metafactoryMobile Engineering 2020. 4. 18. 18:22
Kotlin + Retrofit + OkHttp 예제를 만들고 있는데.. 갑자기 다음과 같은 에러가 나와서 살짝 당황했습니다. java.lang.NoSuchMethodError: No static method metafactory (declaration of 'java.lang.invoke.LambdaMetafactory' appears in /apex/com.android.runtime/javalib/core-oj.jar) 원인은 자바의 호환성에 대한 지정이 없었기 때문이었습니다. 그래서 다음과 같이 app:gradle.build에 추가해서 1.8 기준으로 지정해서 해결할 수 있었습니다. android { ... compileOptions { sourceCompatibility JavaVersion.V..
-
[Android] Http 통신을 로그로 기록하기Mobile Engineering 2020. 4. 18. 13:22
How to logging Http communication used by Okhttp? 모바일 프로그래밍을 하다 보면 인증, 로깅등을 위해서 Http 정보를 로그로 출력해야 하는 상황이 있다. Retrofit과 OkHttp를 이용해서 Http 통신에 대한 로그도 출력해보자. Retrofit, OkHttp에 대한 소개와 사용법은 이미 알고 있다고 가정한다. 1. app:gradle.build에 아래와 같이 OkHttp Logging Lib를 추가한다. ... dependencies { ... // OkHttp implementation group: 'com.squareup.okhttp3', name: 'okhttp', version: '4.5.0' // Use for HttpLoggingIntercept..