과정
- 비즈니스 요구사항 정리
- 회원 도메인과 리포지토리 만들기
- 회원 리포지토리 테스트 케이스 작성 - JUnit
- 회원 서비스 개발
- 회원 서비스 테스트
비즈니스 요구사항
- 데이터: 회원ID, 이름
- 기능: 회원 등록, 조회
- DB가 정해지지 않았다고 가정 (NoSQL, RDB 등 ...)
일반적인 웹 어플리케이션 계층 구조
- 컨트롤러 : 웹 MVC 컨트롤러 역할
- 서비스 : 핵심 비즈니스 로직 ex) 회원 중복 불가 기능
- 리포지토리 : 데이터베이스 접근, 도메인 객체를 DB에 저장, 관리
- 도메인 : 비즈니스 도메인 객체 ex) 회원, 물건, 주문 등등 DB에서 관리
클래스 의존 관계
- memberService
- MemberRepository (interface로 : DB가 정해지지 않았다고 가정했기 때문. 구현 클래스 변경할 수 있도록)
- Memory MemberRepository : 구현체
회원 도메인 만들기
-
Java에 domain 패키지를 만들고, Member라는 클래스를 만듦.

-
id, name이라는 private 변수와 getter, setter 만듦.

리포지토리 만들기
- Java에 repository 패키지를 만들고, Interface로 MemberRepository 만듦


기능을 명시해줌.

implements 를 하고 alt+Enter 하면 필요한 것들을 전부 import 할 수 있다.

멤버 데이터를 기억하도록 하는 클래스.
save, findById, findByName, findAll 기능을 넣음.
테스트케이스 만들기
- 정상 동작하는지 확인하는 용도
- 준비하고 실행하거나 반복실행 어려움 -> JUnit 프레임워크로 테스트 자체를 실행

- test 파일에 main과 똑같이 패키지와 메소드를 만듦.
- @Test를 하면 실행되는 메서드가 됨.

- 임시로 멤버를 넣어보고, 그 값의 id로 찾은 값이 멤버의 값과 같은지 자동으로 확인하는 테스트코드

- 틀리면 오류 발생

- static import하면 모듈 선언 없이 바로 사용 가능. : alt+Enter
테스트케이스는 순서 없이 동작함
- 각각의 테스트케이스는 영향을 주지 않고 실행되도록 구성해야한다.
- @AfterEach로 각 테스트케이스가 끝날 때마다 초기화하는 함수를 만들어준다.

- TDD에서 테스트케이스 만드는게 중요함.
회원 서비스 개발
- java에 service라는 패키지를 만들고, 기능을 명시해줍니다.
- 우선 MemberRepository를 private으로 선언해주고,
- 다른 메소드를 만들어 나갑니다.
쉽게 테스트케이스 만들기
- ctrl + shift + T


- test에 패키지와 클래스가 똑같이 만들어짐.

- 이 값, 주어졌을 때, 어떻게 되어야 한다 -> 주석대로 만들어나가기
- ctrl + alt + v


실제 객체와 테스트 객체를 같게 해야하는 경우