본문 바로가기

공부/Kotlin19

JUnit5에서 Kotest로 마이그레이션 하며 겪은 트러블슈팅들 1. AnnotationSpec의 사용성 AnnotationSpec에서 @Nested를 사용할 수 없다.. Kotest 5에서 @Nested을 지원한다고 하였지만 https://github.com/kotest/kotest/commit/69eea2d50067c6fa309fbad568d770c5e861a439에서 주석 처리되었다. Added support for @Nested in AnnotationSpec https://github.com/kotest/kotest/issues/2367 https://github.com/kotest/kotest/issues/3103 java.lang.IllegalArgumentException: object is not an instance of declaring class.. 2022. 10. 20.
코틀린에서 JPA를 사용할 때 고려할 점(SETTER, 생성자 안의 프로퍼티, data class) 인프런 최태현님의 실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기를 보고 정리하였습니다. 코틀린에서 JPA를 사용할 때 고려할 점을 하나씩 살펴보자! 1. setter를 어떻게 처리할까? setter를 사용하는 것보다 좋은 이름의 함수를 사용하는 것이 훨씬 clean하다. 하지만 코틀린에서 생성자 필드를 생성하면 setter는 public이다. 따라서 setter를 사용할 수도 있다. public getter는 필요하다. 방법1. setter를 private로 닫는다. backing property를 사용한다. 방법2. custom setter를 이용한다. class User( name: String ) { val name = name private set // set을 잠군다 } 하지만, .. 2022. 8. 28.
코틀린 기본내용을 모두 정리해보자 코틀린을 다시 정리해보자! 우아한테크코스 서비스 근로 크루들과 ‘코틀린 인 액션’ 책으로 한번 공부를 하였지만 다시한번 초심의 마음으로 정리를 한번 해보고자 한다. 인프런 최태현님의 자바 개발자를 위한 코틀린 입문 강의를 보고 정리하였다. 코틀린에 관한 TMI 코틀린은 IntelliJ를 만든 JetBrains 회사에서 만들었다. IntelliJ가 Java로 작성되어 있는데 유지보수 하다가 화가 났다고한다. 코틀린은 Java와 100% 호환 가능하다. 코틀린은 정적 타입 언어이다. (구성 요소를 컴파일 시점에 알 수 있다) 코틀린에서 별도의 지시어를 붙이지 않으면 모두 public 이다. 1. 변수 다루기 모든 변수는 val로 만들고 꼭 필요한 경우만 var로 변경한다. 코틀린에서의 원시 타입 long v.. 2022. 8. 27.
왜 Kotest를 사용해야 할까? 1. 왜 Kotest로 전환해야 할까? 먼저, JUnit 의 단점을 알아보자. 단위테스트에 특화되어 있다. 한눈에 알아보기 매우 어렵다 테스트코드가 중복될 경우가 많다. 테스트 스타일이 한정적이다. Kotest의 장점 Kotest 를 사용하면 빠트린 테스트 코드를 찾기 쉽고 테스트 코드를 관리할 때 스코프 범위만 신경쓰면 된다. 기존 nested test 의 가독성을 개선할 수 있고 중복을 줄일 수 있다. DSL 을 활용해서 더 가독성 높은 테스트를 작성할 수 있다. 다양한 테스트 스타일을 테스트 상황에 맞게 설정하여 더 효과적인 테스트 코드를 작성할 수 있다. 다른 플랫폼에서 호환이 가능하다. 코틀린을 사용하더라도 JUnit, AssertJ, Mockito 등을 사용할 수 있다. Kotest, Mock.. 2022. 7. 26.
Kotest의 테스트스타일 10가지 1. Fun Spec class MyTests : FunSpec({ test("String length should return the length of the string") { "sammy".length shouldBe 5 "".length shouldBe 0 } }) 2. Describe Spec class MyTests : DescribeSpec({ describe("A") { context("B") { it("C") { // test here } } } }) 3. Should Spec class MyTests : ShouldSpec({ should("return the length of the string") { "sammy".length shouldBe 5 "".length shouldBe 0.. 2022. 7. 26.
11장 DSL 만들기 1. API에서 DSL로 깔끔한 API란 어떤 의미일까? 코드 읽는 독자가 명확하게 이해할 수 있어야 한다(이름, 개념) 코드가 간결해야 한다. 코틀린의 깔끔한 API를 다시 복습해보자 자바 코틀린 사용한 언어 특성 1-1. DSL : 영역 특화(declarative) 언어 영역 특화 언어 : 범용 프로그래밍 언어를 기반으로 하여, 필요하지 않은 기능을 없앰 → 범용(imperative) 프로그래밍 언어와 달리 declarative 이다. 하지만, 범용 언어와 조합하기 어렵다. 이를 극복하기 위해 internal DSL 개념이 유명해졌다! 예) SQL, 정규식 1-2. 내부 DSL (internal DSL) external DSL : 독립적인 문법구조 internal DSL : 범용 언어로 작성된 프로그.. 2022. 7. 18.