spring boot 간단 프로젝트 만들기_3

다돔잉·2021년 3월 7일

참고

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술' 인프런 강의를 정리한 것 --> 스프링부트 강의 바로가기

회원 관리 예제 - 백엔드 개발

Test

  • juint5 사용
  • 테스트는 테스트간의 의존 관계가 없어야 함(테스트의 순서는 보장할 수 없음)
  • 하나의 테스트가 끝날 때마다 저장소나 공용 데이터를 깔끔하게 지워야함
import

Assertion -> assertj -> option+Enter -> assertThat 사용 가능

@AfterEach // 메서드가 끝날때마다 실행하는 메서드
public void afterEach(){
	repository.clearStore(); // 테스트가 실행되고 끝날 때마다 지움
}
  • given, when, then
@Test
void 회원가입() {
	// given 데이터를 기반으로
	Member member = new Member();
	member.setName("spring");
        
	// when 실행했을 때 이걸 검증하는구나
	Long saveId = memberService.join(member);

	// then 결과
	Member findMember = memberService.findOne(saveId).get();
	assertThat(member.getName()).isEqualTo(findMember.getName());
}
  • 예외에 관한 테스트
assertThrows(IllegalStateException.class, () -> memberService.join(member2));
// 예외 메세지도 받을 수 있음
IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2));

assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다.");

repository DI

  • MemberService의 MemoryMemberRepository와 MemberServiceTest의 MemoryMemberRepository가 서로 다른 repository임(= 다른 인스턴스)
    -> 같은 respository로 테스트해야 맞음
    -> 같은 인스턴스를 쓰도록 해야함
  • MemberService의 MemoryMemberRepository는 외부에서 주입받으며 같은 MemoryMemberRepository를 사용하게 됨
  • 테스트케이스 역시 모두 같은 MemoryMemberRepository를 사용함
profile
안녕

0개의 댓글