spring 회원 관리 예제 실습 : 서비스 테스트 케이스

호연지기·2023년 5월 29일
0

✌️ 회원관리 프로젝트

작성한 회원 서비스가 정상적으로 작동하는지 확인하기 위해 테스트 케이스를 작성한다.

클래스에서 바로 테스트 케이스 만드는 방법!
단축키 : control + Shift + T


테스트할 메소드를 선택하고 OK 버튼을 누른다.

테스트 케이스 만들어진 모습

테스트 할 때는 직관적으로 확인하기 위해서 한글로 클래스를 작성해도 상관없다. (빌드할 때 테스트는 포함되지 않으므로!)

💻 MemberServiceTest 소스

class MemberServiceTest {
    MemberService memberService;
    MemoryMemberRepository memberRepository;

    @BeforeEach
    public void beforeEach() {
        memberRepository = new MemoryMemberRepository();
        memberService = new MemberService(memberRepository);
    }

    //테스트가 끝난 다음에는 저장소 안의 데이터를 지워줘야 한다.
    @AfterEach
    public void afterEach(){
        memberRepository.clearStore();
    }

    @Test
    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);
        IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2));

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

이때, 테스트 클래스에서 멤버 리포지토리를 다시 생성하게 되면 멤버 서비스에서 사용하는 리포지토리와 서로 다른 인스턴스가 된다.

그래서 테스트 클래스에서는 멤버 리포지토리를 따로 호출하지 않고 서비스에서 상속자로 Generate한다.

💻 MemberService 소스

private final MemberRepository memberRepository;

public MemberService(MemoryMemberRepository memberRepository) {
    this.memberRepository = memberRepository;
}

MemberServiceTest 에서 활용하는 부분

@BeforeEach
public void beforeEach() {
    memberRepository = new MemoryMemberRepository();
    MemberService memberService1 = memberService;
    memberService1 = new MemberService(memberRepository);
}

활용한 단축키

변수 추출하기 단축키 : cmd + option + v
같은 단어끼리 묶어서 리팩토링 : shift + f6
Generate : control + enter

📅 DATE

2023.05.29 작성

profile
사람의 마음에 차 있는 너르고 크고 올바른 기운

0개의 댓글