@SpringBootTest 관련 애너테이션 정리

@SpringBootTest 관련 애너테이션 정리

이번 글에서는 Junit5와 함께 Spring Test Context Framework를 사용해서 통합 테스트 코드 작성 시 자주 사용하는 애너테이션에 대해 알아보겠습니다. Spring이 제공하는 @SpringBootTest를 사용하면 스프링 프레임워크 환경에서 동작하는 통합 테스트 코드를 작성할 수 있습니다. 예를 들어 스프링 IoC 컨테이너를 통해 Bean생성하고…

LocalDateTime.now() 테스트 방법

LocalDateTime.now(ZoneId) 메서드 테스트하기

이번 글에서는 LocalDateTime.now(ZoneId)이 생각하는 대로 동작하는지 확인하기 위해 테스트 코드를 작성했던 일에 대해서 알아보겠습니다. Java8 부터 제공되는 유틸 클래스인 LocalDateTime이 제공하는 LocalDateTime.now(ZoneId) 메서드는 특정 타임존에 해당하는 현재 시간을 반환합니다. 즉, 고정된 값이 아니라 매 초 다른 값을 반환한다는 것을 의미합니다….

ObjectMapper 사용법

JSON을 DTO로 변환하는 방법 (ObjectMapper 사용법)

이번 글에서는 Json 파싱을 위한 라이브러리 중 하나인 jackson-databind에서 제공하는 ObjectMapper 객체를 사용하는 방법을 정리해보겠습니다. ObjectMapper 객체는 JSON 문자열을 파싱해서 Obejct로 변환하는 역할을 합니다. 대표적인 세 가지 JSON 유형으로, 단일 객체 유형, 배열에 객체가 포함된 유형, 단일 객체가 객체 배열을…

람다와 Stream 예제로 이해하기

람다, Stream 예제로 이해하기

Java에서 지원하는 람다와 스트림은 코드를 더 간결하고 유지보수하기 좋은 코드를 작성하는 데 큰 도움이 됩니다. 이번 글에서는 람다와 Stream 예제 코드를 통해 기본적인 구조를 파악해보고 기본적인 설명과 함께 이들을 활용하여 코드를 어떻게 더 간결하고 효율적으로 작성할 수 있는지 살펴보겠습니다. 람다가…

Optional 예제로 배우기

Optional 예제로 이해하기 (많이 쓰이는 패턴 정리)

어떤 객체가 예상치 못하게 null이 되었을 때 그 객체의 메서드를 호출하면 NullPointerException이 발생합니다. 그래서 우리는 메서드를 호출하기 전에 객체가 null인지 확인하기 위한 코드를 반복적으로 추가하게 됩니다. 똑같은 예외 처리를 반복하다 보니 좀 더 효율적인 null 처리 방법을 찾게 되었고, 이를…

OpenFeign 예제로 배우기

Spring Cloud OpenFeign 예제로 배우기

Spring Cloud OpenFeign은 스프링에서 제공하는 오픈소스 HTTP Client 입니다. 애플리케이션 내부적으로 다른 시스템과 HTTP 통신을 해야 할 때 간편하게 사용할 수 있습니다. OpenFeign 예제로 사용법을 간단하게 배워 봅시다. 간단한 Client Application과 Server Application을 만들어서 테스트합니다. 그런데 서로 다른 애플리케이션이 통신하는…

ERD 설계 방법

ERD 설계 방법 예제로 배우기

실무에서 ERD를 설계하고 개발했던 경험을 바탕으로 ERD 설계 방법에 대해 간단하게 정리하는 시간을 가져보겠습니다. ERD와 엔티티(Entity) ERD(Entity Relationship Diagram)는 엔티티 간의 관계를 그림으로 나타낸 것입니다. 엔티티란 개발자가 DB에 저장해서 관리하는 객체입니다. 저장된 객체를 식별하려면 각각을 식별할 수 있는 식별자가 있어야…

테스트 자동화가 개발 시간을 줄여주는 이유

테스트 자동화의 핵심은 개발 소요 시간을 줄이는 것이라고 생각합니다. 개발 업무 중 시간을 효율적으로 쓰려고 노력하다 보니 자연스럽게 테스트 코드를 작성하면서 개발을 진행하는 습관이 생겼습니다. 실제로 낭비되는 시간을 줄이는 데 테스트 자동화가 도움이 되었습니다. 앞으로의 시간을 효율적으로 쓰기 위해 익힐…

큰 목표를 작게 나누는 방법

큰 목표를 작게 나누는 방법 (TDD를 인생에 적용해보기)

문득 그런 생각이 들 때가 있습니다. 삶을 살아갈 때 TDD 방법론과 유사한 방식을 시도해보는 것도 나쁘지 않겠다고요. 곰곰이 생각해보니 다들 이미 그렇게 살고 있는 것도 같습니다. TDD(Test Driven Development)는 항상 이루고자 하는 목표를 작은 단위의 테스트로서 먼저 나타냅니다. 인생에서는 어떤가요?…

PR 사이즈가 커지는 이유 3가지

PR 사이즈가 커지는 이유 3가지

PR 사이즈가 크다는 뜻은 하나의 PR(Pull Request)에 변경 사항이 너무 많다는 것을 의미합니다. PR 사이즈가 크면 리뷰어가 리뷰할 때 시간이 많이 필요하게 됩니다. 이해하기 쉬운 코드를 작성하기 위해 노력한다 해도 타인이 작성한 코드를 읽고 이해하는 일은 쉽지 않은 일입니다. PR…