본문 바로가기

전체 글

(60)
[Unit Test] MockK (1) - Mock, Spy 안녕하세요.오늘은 코틀린에서 사용하는 모킹 프레임워크, MockK에 대해 알아보도록 하겠습니다.MockK?Mock + Kotlin의 합성어 입니다. MockMock 객체는 실제 객체를 대신하여 가짜 객체를 불러온 뒤, 특정 동작을 지정할 수 있는데 사용됩니다.이러한 행위를 모킹 (mocking) 이라고 합니다. 의의실제 객체의 의존성을 제거하고, 테스트를 독립적이고 쉽게 제어할 수 있는 기술입니다. 아래는 의존성이 있는 클래스 예시입니다.class Server { fun getGrade(user: User): String { return when { user.getScore() >= 90 -> "A" user.getScore() >= 80 -> "..
[Kotlin] Null Safety 안녕하세요.이번에 회사에서 Java 언어를 Kotlin으로 바꾸면서 고민하고 찾아봤던 내용을 기반으로 작성했습니다. 그 중 Null 처리에 관해 고민을 많이 했었습니다.그래서 오늘은 Kotlin의 Null Safety에 대해 알아보고 어떻게 이를 적용했는지 알아보겠습니다.Null 처리기존 자바 코드의 NullException을 캐치하는 try - catch 문을 그대로 코틀린으로 가져와서 Not-Null 연산만 덧붙이고 끝내고 싶었습니다.fun printModelLength(model: String?) { try { val length = model!!.length println("The length of the model string is: $length") } ca..
[Unit Test] JUnit5 (2) - Parameterized Test 안녕하세요.Parameterized Test에 대해서 알아보겠습니다.Parameterized TestParameterized Test란 여러 세트의 데이터를 사용하여 동일한 테스트 메서드를 여러 번 실행할 수 있게 하는 기능입니다.반복적인 테스트 코드를 줄일 수 있는 장점이 있습니다.다양한 입력에 대해 테스트를 쉽게 수행할 수 있는 장점이 있습니다. AnnotationParameterized Test를 사용하는 주요 어노테이션으로는 아래와 같습니다.@ParameterizedTest : 파라미터 테스트 메서드를 나타냄@ValueSource : 단일 값 배열을 제공함@CsvSource : 여러 Csv 값을 제공함@MethodSource : 메서드를 통해 테스트 데이터를 제공함@ArgumentsSource :..
[Unit Test] JUnit5 (1) - Use in Android Studio 안녕하세요.Unit Test 프레임워크 중 하나인 JUnit5에 대해 알아보겠습니다.JUnit5JVM 기반 언어에서 단위 테스트를 작성하고 실행하는데 사용되는 프레임워크입니다.그래서 Java, Kotlin 언어로 개발할 때 테스트 프레임워크로 가장 많이 사용됩니다.JUnit5 in Android StudioJUnit5를 안드로이드 스튜디오에서 사용하는 방법에 대해 알아보겠습니다,언어는 Kotlin을 사용할 것입니다.(버전은 다를 수 있으니 체크해주세요) build.gradle (app 수준)android { ... testOptions { unitTests.includeAndroidResources = true } ...}dependencies { // JUnit ..
[Kotlin] Coroutine (3) - 예외 처리 안녕하세요. 코루틴 예외 처리에 대해 알아보겠습니다. 사전 지식 코루틴에서 예외 처리는 기존의 예외 처리와는 조금 다른 방식으로 처리합니다. 코루틴은 비동기적으로 동작하고 여러 스레드 간에 분산되어 있을 수 있기 때문에 몇 가지 고려할 사항이 있습니다. 코루틴 구조 코루틴은 계층 구조를 가집니다. 호출한 코루틴은 자식 코루틴이 됩니다. 예외 전파 예외가 발생하면 기본적으로 부모로 전파하게 됩니다. 예외가 발생하면 해당 코루틴은 물론, 자식 코루틴의 작업이 전부 cancel 됩니다. job5에서 예외가 발생하면 job2 -> job1 까지 예외가 전파됩니다. ⇒ 최종적으로 job1을 루트로 하는 subtree 내의 모든 코루틴의 실행이 취소됩니다. 예외 처리 방법 try-catch launch 안의 코드에..
[Kotlin] Coroutine (2) - Use in Kotlin 안녕하세요. 코틀린에서 코루틴을 사용하는 방법에 대해 알아보겠습니다. 스케줄러의 코루틴 관리 스케줄러가 코루틴을 suspend & resume 해서 관리합니다. suspend 현재 코루틴 실행을 일시 중지하고 모든 로컬 변수를 저장합니다. resume 정지되었던 위치부터 정지된 코루틴을 재개합니다. 비동기 작업을 하고 싶으면 suspend 키워드를 함수 앞에 붙여주면 됩니다. suspend fun doSomething() { ... } Dispatcher Dispatcher는 코루틴이 실행되는 스레드 또는 스레드 풀을 관리하는 개념입니다. Kotlin은 코루틴을 어떤 스레드에서 실행할지 정하는데에 사용할 수 있는 3가지 dispatcher를 제공합니다. Dispatchers.Main android 기본 ..
[Kotlin] Coroutine (1) - 코루틴이란? 안녕하세요. 오늘은 코루틴에 대해 알아보도록 하겠습니다. 개념 비동기 프로그래밍을 위한 일종의 서브루틴 또는 경량 스레드 입니다. 코드의 일부를 일시 중단하고 나중에 이어서 실행할 수 있는 프로그래밍 요소 입니다. 비동기 프로그래밍은 작업이 완료될 때 까지 기다리지 않고, 다른 작업을 실행하는 프로그래밍 기법입니다. 하지만 서브 루틴과 경량 스레드는 익숙치 않은 개념입니다. 루틴 메인 루틴 프로그램의 시작 지점이자 주 실행 흐름을 담당하는 부분입니다. 메인 루틴은 다른 서브 루틴이나 함수를 호출하고, 프로그램의 주요 로직을 수행합니다. 서브 루틴 메인 루틴에서 호출되어 특정 기능을 수행하는 코드 블록입니다. 함수, 메소드, 프로시저 등으로 불리기도 합니다. 서브 루틴이 실행을 완료하면 호출한 곳으로 돌아..
[Android Library] Retrofit (2) - retrofit in MVVM 안녕하세요. MVVM 디자인 패턴에서 Retrofit이 어떻게 쓰이는지 실제 예시 코드와 함께 살펴보겠습니다. Code https://github.com/shantudas/android-architecture-components-mvvm-retrofit-kotlin GitHub - shantudas/android-architecture-components-mvvm-retrofit-kotlin: This repository contains Android Architecture Component This repository contains Android Architecture Components ( LiveData , View Model and MVVM pattern ) : work in progress -..