-
[스프링 입문] Section 3.회원 관리 예제: 회원 서비스 테스트강의 기록/스프링 입문(김영한) 2021. 3. 16. 15:04
Section 3
- 비즈니스 요구사항 정리
- 회원 도메인과 리포지토리 만들기
- 회원 리포지토리 테스트 케이스 작성
- 회원 서비스 개발
- 회원 서비스 테스트
회원 서비스 테스트
테스트시 기본적으로 만들 큰 틀을 짜놓고 하면 좋음. 필요에 따라 변경하면서 만들면 좋음.
// given(어떤 데이터가 주어졌을떄) // when(언제) // then (결과)
hello.hellospring.service
MemberServiceTest.java
package hello.hellospring.service; import org.junit.jupiter.api.Test; import hello.hellospring.domain.Member; import hello.hellospring.repository.MemoryMemberRepository; import static org.assertj.core.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; class MemberServiceTest { MemberService memberService; MemoryMemberRepository memberRepository; /** * BeforeEach * 각 테스트 실행 전에 호출된다. 테스트가 서로 영향이 없도록 항상 새로운 객체를 생성하고,의존관계도 새로 맺어준다. */ @BeforeEach public void beforeEach() { memberRepository = new MemoryMemberRepository(); memberService = new MemberService(memberRepository); } @AfterEach public void afterEach() { memberRepository.clearStore(); } @Test public void 회원가입() { // given Member member = new Member(); member.setName("hello"); // when Long saveId = memberService.join(member); // then Member findMember = memberService.findOne(saveId).get(); assertThat(member.getName()).isEqualTo(findMember.getName()); } @Test public void 중복_회원_예외() { // given Member member1 = new Member(); member1.setName("spring"); Member member2 = new Member(); member2.setName("spring"); // when memberService.join(member1); /* try { memberService.join(member2); fail(""); } catch (IllegalStateException e) { assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다."); } */ IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2));//예외가 발생해야 한다 // then } }
'강의 기록 > 스프링 입문(김영한)' 카테고리의 다른 글
[스프링 입문] Section 3.회원 관리 예제: 회원 서비스 개발 (0) 2021.03.16 [스프링 입문] Section 3.회원 관리 예제: 회원 리포지토리 테스트 케이스 작성 (0) 2021.03.16 [스프링 입문] Section 3.회원 관리 예제: 회원 도메인과 리포지토리 만들기 (0) 2021.03.16 [스프링 입문] Section 3.회원 관리 예제: 비즈니스 요구사항 정리 (0) 2021.03.16 [스프링 입문] Section 2.스프링 웹 개발 기초 (0) 2021.03.16