본문 바로가기
반응형

[Android]/[Kotlin]15

[발표] 고차함수 정리 동기들과의 스터디에서 발표할 자료로써 정리해보고자 글을 작성합니다. 복습의 기회로 삼겠습니다. 람다 함수형 프로그래밍의 대표적 장점으로, 익명함수 정의 기법입니다. 아래는 람다의 기본적인 표현식입니다. 1. original format (인자타입) -> (리턴타입) { 입력값 -> 반환값 } (Int, Int) -> (Int) { a, b -> a + b } 2. simple format { 매개변수: 매개변수타입 -> 함수 본문 } { a: Int, b: Int -> a + b } 일반 함수 fun sum(a: Int, b: Int): Int { return a + b } 익명 함수 (람다) { a: Int, b: Int -> a + b } 람다의 반환은 함수 본문의 마지막 표현식입니다. 람다 정의에서.. 2024. 3. 14.
Kotest - 코틀린 기반의 테스트 코드 작성하기 코틀린은 많은 테스트 라이브러리 중 Kotest가 가장 많이 쓰입니다. JAVA 방식이 아닌, Kotlin 방식의 단위 테스트 @Test fun `회원의 비밀번호와 다를 경우 예외가 발생한다`() { val user = createUsesr() assertThrows { user.authenticate(WRONG_PASSWORD) } } - 역따옴표로 묶인 함수 이름은 한글과 공백으로 표현할 수 있다. - 예외 관련 테스트는 JUnit 5의 assertThrows 및 assertDoesNotThrow와 같은 Kotlin 함수를 사용하면 더 간결하다. 테스트 팩토리, Given 조건을 손쉽게 재사용하기 createMission(submittable = true) // 과제 제출 가능한 경우 craeteMi.. 2023. 11. 2.
Google In app billing 6 - All products should be of the same product type. Google In app billing을 구현하다 보면 All products should be of the same product type 와 같은 오류를 경험할 수 있습니다. 이 오류는, queryProductDetails() 함수를 이용하여 상품을 쿼리하려 할 떄 INAPP 상품과 SUBS 상품을 섞어서 요청할 시에 발생합니다. 즉, 일회성 상품(INAPP) 과 구독형 상품(SUBS) 상품 정보는 한번에 함께 쿼리할 수 없습니다. INAPP은 INAPP 끼리 묶어서 한번에 쿼리할 수 있고, SUBS는 SUBS 끼리 묶어서 쿼리할 순 있지만 INAPP과 SUBS를 섞어서 쿼리할 순 없습니다. productList.add( QueryProductDetailsParams.Product.newBuilder.. 2023. 10. 24.
코루틴 예외처리 주의 출시할 앱을 디버깅하는 과정에서, 앱이 어느새부턴가 동작이 잘 안되는 것을 확인했었다. 앱의 타입이 백그라운드 서비스 타입이라 이것이 시스템에 의해 종료된건지, Doze 모드에 의해 멈춘건지, 비정상적으로 종료된건지 등 명확한 원인을 찾을 수 없었다. 그래서 예외가 발생하는 것인지 하여 예외처리를 했었지만, 예외처리에도 잡힌 결과가 없었다. 하지만 알고보니 예외처리를 잘못 하고 있었다. 서비스 내에서 난 다음와 같이 예외처리를 하고 있었다. runCatching { CoroutineScope(Dispatchers.IO).launch { } }.onFailure { } 이렇게 하면 예외처리가 될 거라고 생각했다. 근데 예외가 잡히지 않고 있었다. runCatching이 코루틴 스코프의 예외까지 잡아줄 것 .. 2023. 7. 1.
반응형