본문 바로가기

강의 내용 정리/스프링 입문

회원 서비스 테스트

테스트 만들고 싶은 클래스이름 위에 커서 올려두고 Ctrl + Shift + T 누르고 테스트원하는 메서드 선택하면 자동으로 테스트가 만들어진다.

 

자동으로 service 디렉토리에 MemberServiceTest가 만들어졌다.

 

테스트코드의 메서드이름은 한글로 가능!!

테스트의 전형적인 틀

 

 

 

 

1. 회원가입

 

 

 

 

 

2. 중복 회원 예외

   1) try-catch 문 사용

 

   - 위의 가입테스트는 잘되는 경우를 테스트함 (반쪽짜리 테스트) 예외 상황도 상항 테스트 해주어야한다.

 

 

trycatch문으로 예외를 잡았다. member1,2를 같은 이름 spring으로 해두었다. member1을 join 후 member2를 join할 때 이 때 예외가 터지지 않고 그 다음 줄로 넘어가면 fail(); 임을 명시한다.

 

우리는 예외가 터지게 설계 해두었으므로 IllegalStateException을 잡아서 assertThat해준다. 이 때 assertThat은 없어도 됨

 

예외가 터져야 테스트가 성공한 것이다.

 

 

 

 

   2) assertThrows 사용

 

assertThrows(IllegalStateException.class, () -> memberService.join(member2));

 이후 Ctrl + Alt +V 로 변수 받기

 

assertThrows ( foo, bar)

foo : bar의 로직을 태울 때 foo의 exception이 터져야한다.

bar : 이 로직이 돌아갈 때

 

e.getMessage() 는 메세지 검증

 

 

 

 

# 이 테스트도 각 메서드가 끝날 때 마다 리포지토리를 지워야한다. ( 테스트는 독립적이어야한다. )

 

 

MemoryMemberRepositoryTest 처럼 업캐스팅하면 안됨 -> clearStore 메서드가 MemoryMemberRepository의 메서드임.

 

( 이전 테스트 바로 또 실행 : Shift + F10 )

 

 

 

 

 

 

 

----------------------------------------어려울 수 있음

# 객체가 달라지는 문제

 

 

- 해결 : 생성자를 만들어서 테스트 코드에서 new해준다.

MemberService.java
MemberServiceTest.java

 

memberService=new MemberService(memberRepository);

 

 

# DI

1. 에서 처럼 외부에서 new 해줄 때

2. MemberService의 입장에서 내가 직접 new하지도 않는데 memberRepository를 외부에서 넣어준다. -> DI

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

해당 강의를 수강 후 정리한 내용입니다.출처 : 인프런 김영한님의 강의를 수강 후 정리한 내용입니다.

 

 

 

 

꾸준히 다시보자.

 

1. 220712

2. 220731

Recent Posts
Popular Posts
Recent Comments