본문 바로가기
Java/스프링 입문 - 스프링 부트, 웹 MVC, DB 접근 기술

[회원 관리 예제, 백엔드 개발 - (5)] 회원 서비스 테스트

by Rezal 2022. 6. 30.

git repository : https://github.com/Rezalog/spring-boot-entry-inf

 

GitHub - Rezalog/spring-boot-entry-inf

Contribute to Rezalog/spring-boot-entry-inf development by creating an account on GitHub.

github.com

 

 

구현한 회원 서비스, MemberService 를 테스트하기 위한 코드를 작성해보자.

이때 테스트 코드 작성시, given-when-then 으로 나누어 작성하는 습관을 들이자!

(**cmd + shift + T 로 테스트 자동 생성이 가능 !)

 

 

MemberServiceTest

 

beforeEach, afterEach method : 각각 테스트 전 DI 로 인스턴스 생성, 테스트마다 repository data clear 역할을 한다.

 

beforeEach

MemberService class 의 생성자(외부에서 주입 가능하도록 설정, DI)

  • MemoryMemberRepository 은 MemberRepository 를 implements하므로, MemberRepository 타입으로 볼 수 있다.
  • MemberService 에 MemberRepository 타입의 인자를 주입(Dependency Injection) 으로 MemeberServiceTest class 에서 MemberService 인스턴스를 생성한다.

 

afterEach

 

  • MemoryRespository 인스턴스가 있어야 clear가 가능하므로 memoryRepository 선언

 

 

회원가입()

 

회원가입 test method (commit 할 때, ASCII warning 이 발생)

*오타 : memberService.findOne -> memberRepository.findById

- 기본 로직

  • 회원가입 정상 작동여부, 중복회원 정보 입력 시 에러 동작 여부, DB에 저장된 값과 도메인에 set된 값의 일치여부

- 테스트

  • given : 도메인인 member에 id, 이름 set
  • when : 도메인 정보로 memberService의 회원가입 메소드인 join 실행, 반환 값인 id 저장
  • then : 반환된 saveId가 member의 name 과 같은지 검증

 

중복_회원_예외()

 

assertThrows(lamda) 방식, try-catch-assertThat 방식
MemberService 의 related method 를 참조하면서 테스트 코드 작성에 참고한다.

 

- 기본 로직

  • 중복 회원 검증이 가능한지, 중복 회원일 때 IllegalStateException 이 나오는지, "이미 존재하는 회원입니다." 에러메세지 검증

- 테스트

  • given : 도메인인 member1,2에 id, 이름 동일하게 set 
  • when : member1 join 이후 member2 join할 때
  • then : 중복 회원 일 때 설정한 IllegalStateException을 올바르게 Throw 하는지 검증, "이미 존재하는 회원입니다." 에러메세지 일치여부 검증

 

테스트 정상 작동 확인.

 

**테스트 시, 정상 작동 여부 뿐만아니라,

Exception 에 대한 처리도 잘 하고 있는지 여러 값을 set 해보면서 테스트해야함 !!