코틀린 3

테스트 하기 좋은 코드, 좋은 테스트 코드

이 글을 쓰는 이유 좋은 테스트 코드, 테스트하기 좋은 코드에 대해서 고민하다가 든 생각을 공유해보고자 적습니다. 테스트 하기 좋은 코드 1. 블랙박스 테스트할때 비즈니스 로직의 결과를 단언할 수 있는 코드가 테스트 하기 편하다. 비즈니스로직과 persist 작업이 한번에 이뤄지고 "OK"나 Unit 과 같은 결과물만 내놓으면 stubbing으로 내용이 잘 돌아갔음을 증명해야하고, 이렇게 되면 레포지토리 레이어까지 내려가서 테스트해야한다. "버그 없음"은 테스트 코드를 통해서 증명할 수 있는게 없기 때문에, return을 받아서 결과를 볼 수 있도록 되어있는게 편한 것 같다. 파라미터로 넣은 객체를 확인하는 방법도 있지만, 객체는 Immutable하게 유지해주는 편이 좋기 때문에 비즈니스 로직은 묶어서 ..

Kotlin 2024.01.15

IR compiler란?

이 글을 쓰는 이유 코틀린 진영은 지금까지 멀티플랫폼을 노리고 있는 언어입니다. 여러 환경에서 돌아갈 수 있도록 하겠다는 것인데요. JVM뿐만 아니라, WASM, JS, Native Platform등에서 돌아갈 수 있는 언어를 만드려고 하고 있습니다. 하지만 대부분 사람들이 멀티플랫폼에서 돌리려고 하기보다는 JVM 원툴로 사용하고 있기 때문에 그리고 JVM에서 굴러가서 쓰는 사람들이 대부분이기 때문에 멀티플랫폼에 관련된 글을 적어서 이런 시도를 하고 있다! 라는 것을 알리고 싶었습니다. 그래서 IR 컴파일러가 뭔데? IR컴파일러는 Kotlin IR(intermediate representation, 중간표현)으로 컴파일을 해주는 친구입니다. 자바가 바이트코드로 바꾸고 이걸 jvm위에 올려서 굴리는 것처럼..

Kotlin 2024.01.04

Error Stubbing 하기

이 글을 쓰는 목적 이 글은 우리가 일상적으로 사용하던 에러 출력들을 하기 위해서 어떤 함수들이 필요한지를 적어둔 글입니다. 코드를 작성하는 중에는 에러 안에 어떤 내용이 들어가는지 생각하지 않는 경우가 많고, 그냥 구현해버리면 되는 일이기 때문에 넘어가곤 합니다. 이 글을 쓰게 된 것은 코틀린 테스트코드를 작성하다보니, Exception을 넘겨주고 테스트를 하다보니, stubbing을 더 해줘야하는 것을 보고 이런 것들까지 구현해줘야한다는 걸 공유하고 싶어서 작성합니다. Error Stubbing? Webclient에서 받은 응답을 상태코드에 따라서 다르게 처리하도록 작업을 진행하고 있었다. 그러던 도중 함수를 분해해서 구현해두었는데, Webclient까지 목킹하는건 내가 원하던 범위 밖이어서 상태코드..

Kotlin 2023.12.21