코프링으로 개발하면서 h2가 처음 create table을 할 때 BaseEntity에 있는 필드들은 인식하지 못하는 에러를 마주한 내용을 포스팅해봤습니다. https://github.com/laboratory-kkoon9/kotlin-spring/tree/develop 배경 h2에서 초기 데이터를 밀어넣어주고 통합 테스트를 하려고 시도했습니다. 이 때 baseEntity와 이를 상속한 cafe entity 코드입니다. package com.laboratorykkoon9.kotlinspring.common import jakarta.persistence.Column import org.springframework.data.annotation.CreatedDate import org.springframew..
단위 테스트 책을 읽고 비즈니스 로직의 흐름을 담당하는 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..
Blocking과 관련해서 받은 면접 질문을 정리한 포스팅입니다. 제가 경험한 면접 질문에 대한 대답을 정리하다보니 저만의 대답 방식으로 인해 간결할 수 있는 점 양해바랍니다. 포스팅에 앞서 Java와 JavaScript 언어를 모두 사용해보신 분들에게는 필수 질문으로 여겨집니다. 면접관이 두 언어의 차이점을 먼저 물어본 뒤, 이 질문을 할 가능성이 높으니 꼭 본인만의 대답을 만들어두면 좋을 것입니다. Blocking I/O vs Non-Blocking I/O 블록킹 I/O는 I/O 작업을 처리하는 동안 호출한 스레드가 작업이 끝날 때까지 대기하는 방식입니다. 이 방식은 I/O 작업이 완료될 때까지 대기하므로, 호출한 스레드가 블록되어 다른 작업을 수행할 수 없게 됩니다. 따라서 여러 개의 I/O 작업이..
단위 테스트에 대해 공부하던 중 Mock와 Stub 용어에 대해 공부한 포스팅입니다. 차이점 목(Mock)은 외부로 나가는 상호 작용을 모방하고 검사하는 데 도움이 됩니다. 예시로는 이메일이나 슬랙 발송이 있습니다. 스텁(Stub)은 내부로 들어오는 상호 작용을 모방하는 데 도움이 됩니다. 예시로는 데이터베이스에서 데이터를 검색하는 행위가 있습니다. 또한, 스텁은 SUT와 관련 의존성 간의 상호 작용을 모방만 하는 반면에 목은 모방과 검사를 함께 합니다. Mock이라는 단어는 두루두루 쓰인다. 책을 접했을 때 헷갈렸던 것 중에 하나가 바로 mockito 라이브러리에서 제공하는 Mock 어노테이션입니다. 책에서 나왔던 이야기를 인용하자면 "실제 목을 만드는 데 도움이 되지만, 그 자체로는 목이 아니다" 라..
단위 테스트에 대해 공부하던 중 테스트 스위트라는 용어에 대해 공부한 포스팅입니다. 단위 테스트 - 예스24 소프트웨어 개발에 있어 단위 테스트는 이제 선택이 아니라 필수가 됐다. 단위 테스트에 대한 오해를 바로잡고, 올바른 단위 테스트에 대한 원칙, 테스트를 작성하는 스타일과 효과적인 테스트 m.yes24.com 테스트 스위트 테스트 케이스들을 하나로 묶은 것입니다. 테스트 케이스 "무엇을 테스트할 것인가?"라는 질문에 대한 답을 제공합니다. 테스트 스위트와 테스트 케이스 차이 예를 들어, 다음과 같은 네 개의 테스트 케이스가 있습니다. 테스트 케이스 1: 로그인 테스트 케이스 2: 새 제품 추가 테스트 케이스 3: 체크아웃 테스트 케이스 4: 로그아웃 이 테스트 케이스에서 애플리케이션에 성공적으로 로..
push한 commit을 취소하고 싶을 때가 있습니다. 이번 포스팅에서는 push한 commit을 취소하는 것에 대해서 다뤄볼 예정입니다. 배경 다른 포스팅을 위해 github에 push를 했었는데, 오타가 있는걸 발견했습니다. push한 해당 커밋을 취소하고 재배포해보겠습니다. 1. git log를 통해 삭제할 커밋을 찾습니다. 오른쪽 하단을 보시면 09cda43c가 커밋입니다. 2. git reset을 통해 commit을 삭제해줍니다. 다음 명령어는 해당 커밋을 삭제해줍니다. git reset 09cda43c^ 제가 취소하려는 커밋이 맨위에 있으므로 git reset HEAD^를 사용하셔도 됩니다. 보통은 soft reset이라고 해서 그 커밋에 있던 변경사항은 다시 되돌려줍니다. 위 이미지를 보시면..
- Total
- Today
- Yesterday
- Olympiad
- 디자인패턴
- 클린 아키텍처
- 백준
- 디자인 패턴
- Spring Boot
- 알고리즘
- Kotlin
- 코테
- Algorithm
- 클린 코드
- 프로그래머스
- MSA
- 객체지향
- Java
- JPA
- AWS
- 이펙티브 자바
- kkoon9
- programmers
- node.js
- 테라폼
- 정규표현식
- Effective Java
- 이팩티브 자바
- BAEKJOON
- Spring
- kotest
- BOJ
- C++
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |