단위 테스트 책을 읽고 비즈니스 로직의 흐름을 담당하는 service layer(비즈니스 로직 흐름을 담당하는 layer) 테스트 코드를 시도했던 내용을 담는 포스팅입니다. 단위 테스트 - 예스24 소프트웨어 개발에 있어 단위 테스트는 이제 선택이 아니라 필수가 됐다. 단위 테스트에 대한 오해를 바로잡고, 올바른 단위 테스트에 대한 원칙, 테스트를 작성하는 스타일과 효과적인 테스트 www.yes24.com 배경 제가 시도 및 고민했던 부분은 다음과 같습니다. 1. mock을 어디까지 쓸 것인가 2. 조회 테스트 필요 유무 3. repository 테스트 필요 유무 1. mock을 어디까지 쓸 것인가 단위 테스트 책에서 보면 mock의 사용을 최소화하라고 나와있습니다. 초반 부분만 봤을 때에는 비즈니스 로..
코프링으로 개발하면서 테스트 작성 중 create table 에서 마주한 에러를 포스팅해봤습니다. 배경 단위테스트 책을 참고하며 service layer 테스트를 위해 table에 insert하는 상황이었습니다. 테스트 환경이기 때문에 spring.jpa.hibernate.ddl-auto 옵션은 create로 했습니다. 허나 테이블 생성 쿼리에서 문법 오류가 발생했습니다. columnDefinition 문제 사실 @CreatedDate 어노테이션만 사용해도 됐는데, columnDefinition까지 설정해줬던게 문제였습니다. H2에서는 해당 entity 설정이 문법 오류를 발생시키는 모양입니다. package com.laboratorykkoon9.kotlinspring.common import jakar..
코프링으로 개발하면서 zeroDateTime(0000-00-00 00:00:00)인 LocalDateTime 값 관련해서 마주한 내용을 포스팅해봤습니다. 배경 as-is(파이썬) 코드로 되어 있는 배치 스크립트를 코틀린으로 이전하는 작업에서 발생했습니다. as-is 코드에서 사용하지 않는 row는 수정 시간을 zeroDateTime으로 변경해주는 로직이 있었습니다. SQL문으로 직접 수정해주었기 때문에 별 문제 없는 로직이었습니다. 허나, 스프링 환경에서 적용하려고 하니 다음과 같은 문제가 발생했습니다. 바로 LocalDate 타입에서 month와 day 값의 최소값이 1인 점이었습니다. import java.time.LocalDate import java.time.LocalDateTime fun mai..
스프링으로 개발하면서 yaml 파일 관련해서 공부한 내용을 포스팅해봤습니다. 개발 환경은 다음과 같습니다. Spring Boot Version : 3.0.1 Java Version : 17 Kotlin Version : 1.8.21 https://github.com/laboratory-kkoon9/kotlin-spring 배경 데이터베이스를 docker 올려서 개발하려고 spring에서 yaml로 환경설정 방법을 알아봤습니다. 스프링 부트 2.4 버전부터 application.yml 하나의 파일로 여러 환경변수를 관리할 수 있게 되었습니다. 자세한 내용은 아래 블로그에서 확인해보시면 됩니다. http://honeymon.io/tech/2021/01/16/spring-boot-config-data-migr..
(변경에 유연한 코드 설계 | 프리온보딩 BE 챌린지 9월)을 참여하면서 겪었던 에러를 정리한 포스팅입니다. 변경에 유연한 코드 설계 | 프리온보딩 BE 챌린지 9월 | 원티드 무료로 양질의 교육을 들어보세요! 챌린저만을 위한 다양한 혜택을 제공해드리고 있습니다. www.wanted.co.kr 개발 환경은 다음과 같습니다. Spring Boot Version : 3.1.2 Java Version : 17 다음은 관련 코드 소스입니다. https://github.com/kkoon9/wanted-preonboarding-challenge-backend-13/tree/feature/kkoon9 배경 RequestBody에 들어가는 정보는 다음과 같습니다. amount : 관람객이 가진 돈 when : 초대권을..
카프카와 관련해서 받은 면접 질문을 정리한 포스팅입니다. 제가 경험한 면접 질문에 대한 대답을 정리하다보니 저만의 대답 방식으로 인해 간결할 수 있는 점 양해바랍니다. Kafka의 장점(특징) (출처) 프로듀서와 컨슈머의 분리하고, 하나의 토픽에 여러 프로듀서와 여러 컨슈머들이 접근 가능합니다. 또한 메시지를 디스크에 영속적으로 저장하여 유실을 방지할 수 있고, 높은 처리량을 자랑하는 걸로 알고 있습니다. 프로듀서와 컨슈머의 분리 각자 역할이 완벽하게 분리되면서, 어느 한쪽 시스템에서 문제가 발생하더라도 연쇄작용이 발생할 확률이 낮아집니다. 멀티 프로듀서와 멀티 컨슈머 하나의 토픽에 여러 프로듀서 또는 여러 컨슈머들이 접근 가능한 구조입니다. 메시지를 디스크에 영속적으로 저장 이는 메시지 유실을 방지하고..
QueryDsl이란? Querydsl은 JPA 기반의 데이터베이스 조회 및 조작을 위한 라이브러리입니다. 복잡한 쿼리(ex 동적 쿼리)를 더 쉬운 작성을 도와줍니다. CustomRepository CustomRepository 인터페이스는 Querydsl을 사용하여 데이터베이스 작업을 수행하는 데 도움을 주는 방법 중 하나입니다. @Repository interface MenuRepository: JpaRepository, CustomMenuRepository interface CustomMenuRepository { fun findByCafeId(cafeId: Long) } class CustomMenuRepositoryImpl: CustomMenuRepository { override fun find..
코프링으로 개발 시 마주친 에러 관련 포스팅입니다. 개발 환경은 다음과 같습니다. Spring Boot Version : 3.0.1 Java Version : 17 https://github.com/laboratory-kkoon9/kotlin-spring 배경 커피 주문 어플리케이션 내 스웨거를 도입하면서 발생한 에러입니다. import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { val kotlinVersion = "1.8.21" id("org.springframework.boot") version "3.0.1" id("io.spring.dependency-management") version "1.1.0" kotlin("jvm") versio..
- Total
- Today
- Yesterday
- MSA
- kotest
- 디자인패턴
- 객체지향
- 테라폼
- 백준
- programmers
- AWS
- Olympiad
- 클린 아키텍처
- Java
- Spring
- BOJ
- 알고리즘
- BAEKJOON
- Kotlin
- Effective Java
- 클린 코드
- 이팩티브 자바
- 디자인 패턴
- kkoon9
- 프로그래머스
- 정규표현식
- JPA
- 이펙티브 자바
- node.js
- Spring Boot
- 코테
- C++
- Algorithm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |