[실습] Mockito 실습Mockito 실습 개요이번 실습은 슬라이스 테스트와 비즈니스 로직 테스트에 Mockito를 적용해 보는 실습입니다.지난 챕터까지 학습했던 구현 코드들이 기본적으로 포함이 되어 있으며, 이를 기반으로 요구 사항에 맞게 Mockito를 사용하여 테스트 케이스를 작성하면 됩니다.실습용 프로젝트 패키지는 ‘com.springboot’ 패키지 하위에 아래와 같이 구성되어 있습니다.adviceauditcoffeeconfigdtoexceptionmemberorderresponsestampvalidator단위 테스트를 위한 테스트 케이스는 일반적으로 Gradle 기반 프로젝트에서 ‘src/test/java/**’ 경로에 작성합니다.여러분들이 작성할 테스트 케이스 역시 ‘src/test/ja..
Chapter - Mockito이 전 유닛에서는 Java에서 가장 많이 사용하는 테스트 프레임워크인 JUnit과 Spring Framework에서 지원하는 테스팅 기능을 이용해서 단위 테스트와 슬라이스 테스트를 위한 테스트 케이스를 작성해 보았습니다.그런데, 테스트 세계에는 우리가 학습한 단위 테스트와 슬라이스 테스트를 조금 더 효과적으로 진행할 수 있는 방법이 존재하는데 그것은 바로 Mock 객체를 테스트에 적용하는 것입니다.이번 유닛에서는 우리가 작성해 본 단위 테스트와 슬라이스 테스트에 Mock 객체를 어떻게 적용할 수 있는지 자세히 알아보도록 하겠습니다.추가적으로 TDD(Test Driven Development)가 무엇인지 살펴보고, TDD 개발에 대한 전반적인 흐름을 이해해 보도록 하겠습니다...
Chapter - 슬라이스 테스트(Slice Test)이번 시간에는 Spring에서 의미하는 슬라이스 테스트(Slice Testing)가 무엇인지 알아보고, Spring MVC 기반의 계층별 테스트를 진행하는 방법을 살펴보도록 하겠습니다.핵심 포인트슬라이스 테스트(Slice Testing)의 의미를 이해할 수 있다.Spring에서 지원하는 테스팅 기능을 이용해서 API 계층의 Controller를 테스트할 수 있다.Spring에서 지원하는 테스팅 기능을 이용해서 데이터 액세스 계층의 Repository를 테스트할 수 있다.[기본] API 계층 테스트슬라이스 테스트란?여러분들이 학습을 위해서 만들어보고 있는 샘플 애플리케이션은 여러 개의 계층으로 나누어져 있습니다.단위 테스트의 경우 일반적으로 특정 모듈이..
[Spring MVC] 테스팅(Testing)트랜잭션까지 적용된 커피 주문 샘플 애플리케이션은 이제 보안(Security)을 제외하고는 그럭저럭 잘 동작하는 애플리케이션이 되었습니다.물론 학습용이기 때문에 별도의 외부 통신은 없지만 요구 사항이 늘어나더라도 기능을 추가하는 데는 크게 무리가 없을 정도의 기본기는 갖추게 되었습니다.하지만 우리가 실무에서 애플리케이션 개발에 참여하게 되면 여러분들이 애플리케이션 구현을 끝냈다고 해서 끝이 아닙니다.여러분들이 애플리케이션에 대한 1차 구현이 끝났다고 생각하더라도 여러분들 입장에서는 여러분들이 구현한 애플리케이션이 잘 동작한다고 생각할지 모르지만, 제3자 입장에 있는 사람들(QA 담당자, Frontend 개발 담당자, 애플리케이션을 사용하는 고객)이 여러분들의 ..
[Spring MVC] 트랜잭션(Transaction)지금까지의 학습을 통해 여러분들은 꽤 잘 돌아가는 커피 주문 샘플 애플리케이션을 만들어 보았습니다.그런데 우리가 만든 커피 주문 샘플 애플리케이션에는 두 가지 중요한 기능이 빠져있습니다.하나는 트랜잭션(Transaction)이고, 나머지 하나는 보안(Security)입니다.이 두 가지 중요한 기능 중에서 이번 시간에는 트랜잭션(Transaction)에 대해서 학습합니다.트랜잭션(Transaction)이 무엇이고, 애플리케이션에 트랜잭션이 왜 필요한지 이번 시간에 자세히 알아보도록 하겠습니다.[Spring MVC] 트랜잭션(Transaction) 학습을 위한 사전 준비 사항이번 유닛의 학습을 원활하게 진행하기 위해 지금까지 여러분들이 구현해 본 Cont..
[실습] Spring Data JPA를 이용한 데이터 액세스 실습커피 주문 서비스 개발1. 연관 관계 매핑 구현 실습Order 클래스(주문)와 Coffee 클래스(커피)의 연관 관계 매핑 구현구현 내용주문과 커피는 다대다의 관계입니다.다대다인 두 클래스의 연관 관계를 매핑하세요.제한 사항@ManyToMany 애너테이션을 사용하면 안 됩니다.@OneToMany 애너테이션만 사용해서는 안 됩니다.@ManyToOne 애너테이션을 먼저 사용하고, 필요하다면 @OneToMany 애너테이션을 사용하면 됩니다.회원이 주문한 주문 정보를 통해 주문_커피 정보를 조회할 수 있어야 합니다.Member 클래스(회원)와 Stamp 클래스(도장)의 연관 관계 매핑 구현구현 내용회원과 스탬프는 일대일의 관계입니다.스탬프는 회원이..
[실습] Spring Data JPA를 이용한 데이터 액세스 실습Spring Data JPA 기반 데이터 액세스 계층 연동 실습 개요이번 유닛에서 여러분이 만들고 있는 커피 주문 샘플 애플리케이션에 JPA와 Spring Data JPA를 적용해 보았습니다.하지만 우리가 아직 제대로 완성하지 않았던 주문_커피 정보에 대한 부분을 이번 시간에 여러분들이 직접 완성해 보는 시간을 갖도록 하겠습니다.실습용 샘플 프로젝트에는 지난 챕터까지 학습했던 구현 코드들이 기본적으로 포함이 되어 있으며, 이를 기반으로 요구 사항에 맞게 Entity 클래스, Mapper 인터페이스, Controller/ Service 클래스, Repository 인터페이스 등을 적절하게 수정하면 됩니다.실습에 필요한 클래스는 ‘com.spr..
[Spring MVC] JPA 기반 데이터 액세스 계층Spring Data JDBC 학습을 진행하느라 수고 많았습니다.Spring Data JDBC 학습을 통해서 여러분들은 ORM의 개념 그리고 Spring Data JDBC 기반의 기본적인 엔티티 설계 방법 및 Spring Data JDBC 사용법 등을 알게 되었을 거라고 생각합니다.이번 시간부터는 JPA에 대한 학습을 진행해 보도록 하겠습니다.JPA라는 기술만으로 따지자면 Spring Data JDBC보다 기술적인 난이도와 복잡도가 더 높은 게 사실입니다.하지만 여러분들은 이미 Spring Data JDBC를 통해서 Spring에서 지원하는 ORM 기술에 조금은 익숙해져 있는 상태입니다.따라서 여러분들이 Spring Data JDBC에 대해서 충분히 ..
[실습] Spring Data JDBC를 이용한 데이터 액세스 실습Spring Data JDBC 기반 데이터 액세스 계층 연동 실습 개요이번 실습은 실습용 샘플 프로젝트에 포함되어 있는 회원 정보 목록 조회 기능에 페이지네이션(Pagination) 기능을 적용하는 실습입니다.페이지네이션(Pagination)이란?예를 들어, 데이터 베이스에 회원 정보가 100건이 저장되어 있는데 클라이언트 쪽에서 100건의 데이터를 모두 요청하는 것이 아니라 한 페이지에 일정 개수만큼만 나누어서 달라고 요청하는 것을 페이지네이션(Pagination)이라고 합니다.즉 page 번호가 1이고, 페이지에 포함되는 데이터의 개수가 10건일 경우, 데이터베이스의 테이블에서는 1 row부터 10 row까지만 조회되어야 합니다.만약 ..
[기본] Spring Data JDBC를 통한 데이터 액세스 계층 구현(2) - 서비스, 리포지토리 구현 기타 이번 챕터에서 수정된 코드서비스 클래스와 리포지토리 클래스 이외에도 서비스 클래스를 사용하는 Controller 클래스, 이와 연관된 DTO 클래스, Mapper 인터페이스 등도 수정된 부분이 존재합니다. ✔ CoffeePostDto 코드@Getterpublic class CoffeePostDto { @NotBlank private String korName; @NotBlank @Pattern(regexp = "^([A-Za-z])(\\\\s?[A-Za-z])*$", message = "커피명(영문)은 영문이어야 합니다(단어 사이 공백 한 칸 포함). 예..