본문 바로가기

Kotlin

(4)
Kotlin 의 널 (Null) 을 다루는 방법 코틀린은 많은 장점을 가지고 있지만, 자바를 사용하던 개발자들이 가장 피부로 와닿는 장점을 뽑으라고 한다면 Null 타입 시스템이 꼽히지 않을까 생각합니다. 코틀린에서는 강력한 Null Safety 한 문법을 제공함으로서 NPE의 발생을 획기적으로 사전에 차단합니다. Nullable 타입 코틀린은 모든 객체타입이 Nullable 한 타입과 NonNull 타입으로 나뉩니다. class Person( val name: String, val nickName: String?, val age: Int ) 타입 뒤에 ? 가 붙은 타입은 Nullable 한 타입이 됩니다. ?가 붙지 않은 타입의 변수에는 null 을 할당할 수 없습니다. 하지만 개발을 하다보면 어떤 Nullable 한 값을 리턴하는 함수를 통하여 얻..
Kotlin 에서 GraphQL-spqr 사용시, Companion Object 스키마 빌드 오류 Kotlin + GraphQL 로 개인 토이프로젝트를 진행하다 부딪현던 문제에 대한 공유입니다. 진행하던 토이프로젝트는 Kotlin + Spring-Boot + JPA + GraphQL 이 사용한 대표적인 기술스택이었고 GraphQL 을 사용하기위하여 GrapQL-spqr-starter 의존성을 사용하였었습니다. GraphQL-spqr 은 기존의 Schema-first 즉 graphQL 스키마를 먼저 정의하고 코드를 작성하는 방식에서 Code-first, 코드를 작성하면 그 코드를 바탕으로 스키마를 만들어주는 라이브러리인데요. 그렇게 작업을 하던 과정에서 Java 에서 GraphQL-spqr 을 통하여 작업할때는 마주할 수 없었던 컴파일 오류를 맞이합니다.. 처음보는 오류에 당황했지만 침착하게 대응해봅니..
Kotlin 의 inline 함수 Kotlin 은 고차함수에 대한 문법을 지원한다. 고차함수를 사용한 함수는 런타임 오버헤드가 어느정도 발생하는데 이를 줄이기 위한 방법으로 Kotlin 은 Inline Function 을 지원한다. 더보기 고차함수란, 함수를 파라미터로 받거나 함수를 리턴하는 즉, 함수를 일급객체로 취급하는 함수를 말한다. 고차함수의 오버헤드 class InlineTestClass { fun highOrderedFunction(a: Int, actionBlock: (a: Int) -> Int): Int { actionBlock(a) return a + 1 } fun main() { val result = highOrderedFunction(1) { a -> a * 2 } println(result) } } 숫자와, 숫자 ..
Mockk 으로 Kotlin 현재 시간 관련 로직 테스트하기 테스트를 하다보면, LocalDate.now() 와 같은 현재 시각이 포함된 로직을 테스트해야 하는 경우가 있습니다. 이런 로직은 현재시각에 따라, 결과값이 달라져 assertion 을 작성하는데 어려움이 있습니다. 물론 시간을 인자로 받아 처리하도록 구현을 변경하는법이 베스트지만 그러기 힘든 경우도 있을것입니다. 이럴때 위와 같은 로직을 테스트하기 위해서 now() 메서드를 mockk 라이브러리를 사용하여 Mocking 하여 테스트를 작성하는 방법을 소개해보겠습니다. Mockk 코틀린은 기본적으로 모든 클래스와 메서드가 final 입니다. java 에서 주로 사용하던 Mock 라이브러리를 이용하면, final 이나 static 메서드를 Mocking 할때 추가 의존성이 필요하다던지, 별도의 세팅을 해주..