회원 관리 예제

김민영·2023년 1월 17일
0

Spring

목록 보기
8/15
post-thumbnail

과정

  1. 비즈니스 요구사항 정리
  2. 회원 도메인과 리포지토리 만들기
  3. 회원 리포지토리 테스트 케이스 작성 - JUnit
  4. 회원 서비스 개발
  5. 회원 서비스 테스트

비즈니스 요구사항

  1. 데이터: 회원ID, 이름
  2. 기능: 회원 등록, 조회
  3. 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

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

  • 테스트에서도 new로 새로운 객체를 할당하니 실제 객체에 대해서 테스트를 진행할 수 없는 경우가 생긴다.

    Constructor

  • 외부에서 선언해주도록 한다.

  • 의존성 주입

profile
노션에 1차 정리합니당 - https://cream-efraasia-f3c.notion.site/4fb02c0dc82e48358e67c61b7ce8ab36?v=

0개의 댓글