Kotlin 4

mockk 간단 사용법

https://mockk.io/ MockK Provides DSL to mock behavior. Built from zero to fit Kotlin language. Supports named parameters, object mocks, coroutines and extension function mocking mockk.io mock 객체 생성하기 val domainRepository = mockk() Argument Matching 사용하기 특정 객체에 expected answer를 부여할때 파라미터를 지정해주어야 한다. matcher는 다음과 같은 느낌으로 동작한다 // 들어오는 파라미터가 1L 일때만 cycle을 반환 every { domainRepository.findById(1L) } r..

이펙티브 코틀린 간단 정리 (Effective Kotlin)

잘 몰랐거나, 인상깊은 부분 위주로만 정리 1장 안정성 안정성 : 크래시가 적으면 사용자와 개발자 모두에게 좋고, 상당한 비즈니스 가치를 제공한다. Item 1. 가변성을 제한하라 시간의 변화에 따라서 변하는 요소를 표현할 수 있다는 것은 유용하지만, 상태를 적절하게 관리하는 것이 생각보다 꽤 어렵다. 프로그램을 이해하고 디버그하기 힘들어진다. 시점에 따라 값이 달라질 수 있기 때문에 코드의 실행을 추론하기 어려워진다. 멀티스레드 프로그램일 때는 적절한 동기화가 필요하다. 테스트하기 어렵다. 상태 변경이 일어날 때 이러한 변경을 다른 부분에 알려야 하는 경우가 있다. 가변성은 시스템의 상태를 나타내기 위한 주요한 방법이다. 하지만, 변경이 일어나야 하는 부분을 신중하고 확실하게 결정하고 사용해야 한다. ..

[Kotlin + Spring Boot + Querydsl] gradle multi project 구성하기

안녕하세요! 공부하는 개발자 입니다! 이번 포스트에서는 Kotlin, Spring Boot, Querdsl을 이용하여 gradle multi porject를 구성하는 방법에 대해 알아보겠습니다. 본 포스트를 작성하게 된 계기는 최근 이직한 회사의 프로젝트 구성이 git repository N개와 git submodule을 사용한 형태였기 때문인데요, 따라서 gradle multi module의 본격적인 구성 방법을 살펴보기에 앞서, 한 시스템 내에서 사용되는 모듈을 관리할 수 있는 또 다른 방법인 git repository N 개 + git submodule 에 대해서 간단히 설명드려 보겠습니다 🙂 Git repository N개 + Git submodule 방식 사실 생각해보면 꼭 gradle mult..

[코틀린 탐구생활] when, 그리고 클린 코드

when 사실 when expression을 처음 보았을때 들었던 생각은 switch case문과 무척 유사하다는 점이었다. Java에서는 else 사용을 지양해야 한다는 일반적인 clean code 원칙에 따라 switch case 사용도 지양하고 있었는데, Kotlin의 when은 Java의 switch case보다 훨씬 단순하고 강력했다. 비교를 해보자. Kotlin 숫자가 들어오면 숫자를 3으로 나눈 나머지에 따라 적절한 로직을 수행하고 원하지 않는 형태 이면 exception을 뱉어야 한다고 하자. 이를 Early Return 스타일로 표현하면 다음과 같다. (println에 로직이 들어간다고 생각할 수 있다) private fun validateNumber(num: Int) { if (num ..