Kotlin
-
Mockk(relaxed = true) 는?언어/Kotlin 2023. 3. 13. 23:00
테스트 코드를 짜다보면 특정 클래스의 메서드가 특정 방식이 반환되기를 기대할 때 종종 Mock을 이용해 테스트를 짭니다. 언어마다 여러가지 목킹 도구들이 있고, 그중 코틀린은 Mockk 가 주로 사용됩니다. 코틀린의 테스트 코드를 보면 모킹을 다룰 때 mockk(relaxed = true) 로 되어있는것을 볼 수 있습니다. relaxed = true 를 파라미터로 줄 때와 그렇지 않을 때의 사용방법이 어떻게 다른지 비교해보겠습니다. relaxed = true // Member.kt @Entity class Member( @Column(name = "name") val name: String, ) { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) pri..
-
Spring delete 메소드 주의사항Spring 2023. 2. 14. 22:33
Delete 쿼리 종류 TL;DR 속도 측면에서는 deleteAllInBatch() 가 가장 빠르다. test 코드를 제외하고는 deleteAllInBatch() 를 사용하지 말자 설명 delete(entity) 해당 메서드는 CrudRepository 에 등록되어 있는 메서드 입니다. 엔티티를 파라미터로 받아 해당 엔티티를 삭제합니다. deleteAll() 해당 메서드는 CrudRepository 에 등록되어 있는 메서드로 해당 레포지토리에서 관리 되는 모든 entity 를 삭제합니다. deleteAllInBatch() 해당 메서드는 JpaRepository 에 등록되어 있는 메서드로 모든 entity 를 한번의 함수 실행으로 삭제합니다. 예시 코드의 예시로 설명해보겠습니다. 예시로 다룰 엔티티는 Me..
-
Kotlin 에서 Spring 으로 테스트할 때 주의사항Spring 2023. 2. 14. 20:19
문제 상황 kotlin 에서 JUnit 을 사용하여 테스트를 구성했지만 org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter 오류가 발생했습니다. @SpringBootTest class MemberRepositoryTest( val memberRepository: MemberRepository, ) { @Test @DisplayName("멤버 삭제") fun deleteMember() { val member = memberRepository.save(MemberFactory.of("test")) memberRepository.delete(member) } } 해결 방..
-
Kotlin safe call언어/Kotlin 2022. 11. 29. 23:15
kotlin 에서는 java 와 다르게 null이 될 수 있는 타입과 null이 될 수 없는 타입을 완벽히 구분합니다. null 이 될 수 있는 타입은 일반 타입처럼 쓰고 (Int, String) null 이 될 수 있는 타입은 타입뒤에 물음표를 붙입니다. 만약 null 이 될 수 있는 타입을 호출한다면 어떻게 해야할까요? 이를 무시하고 그냥 호출한다면 NullPointerException 이 발생할 것입니다. 따라서 자바는 이때 if 를 사용해 null 을 방지합니다. public void printStringLength(String str) { if (str != null) { System.out.println("length of str is " + str.length) } else { System...
-
Kotlin 에 대해서 알게 된 것들언어/Kotlin 2022. 10. 11. 22:16
TL;DR 코틀린을 사용하면서 알게된 것을 적어놓습니다. 1. 함수이름에 `(백틱)을 사용하면 함수 이름에 스페이스( ), 괄호( 등을 사용할 수 있습니다. fun `create User (when user doesn't exist)` { //... logic } 실제 사용하는 메서드에서 이렇게 쓰는건 권장되지 않습니다. 메서드를 호출할 때 오히려 가독성 면에서 좋지 않을 수 있습니다. 하지만 테스트 코드를 짤 때는 해당 함수를 호출하는 용도가 아닌 테스트 코드 함수명으로 사용한다면 가독성을 높일 수 있습니다.