[Spring-입문] 회원 관리 예제 - Test해보기(서비스)

DANI·2023년 11월 15일

Spring[김영한T]

목록 보기
6/31
post-thumbnail

우클릭 > generate > Test : 테스트파일 바로 생성됨


💾 MemberServiceTest

✅ join() Test

class MemberServiceTest {

    MemberService memberService;
    MemoryMemberRepository memberRepository;

        @Test
        void join() {
        // given 주어진 것
        Member member = new Member();
        member.setName("홍길동");

        // when
        Long id = memberService.join(member);

        // then
        Member result = memberService.findOne(id).get();
        assertThat(member.getName()).isEqualTo(result.getName());
        }
}

🔵 실행 결과



✅ 중복회원예외() Test - 1

class MemberServiceTest {

    MemberService memberService;
    MemoryMemberRepository memberRepository;

        @Test
        void 중복_회원_예외() throws Exception{
        // given
        Member member1 = new Member();
        member1.setName("홍길동");

        Member member2 = new Member();
        member2.setName("홍길동");

        memberService.join(member1);

        try{
            memberService.join(member2);
            fail();
          } catch(IllegalStateException e){
            assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다.");
          }
        }
}

🔵 실행 결과



✅ 중복회원예외() Test - 2

class MemberServiceTest {

    MemberService memberService;
    MemoryMemberRepository memberRepository;

        @Test
        void 중복_회원_예외() throws Exception{
        // given
        Member member1 = new Member();
        member1.setName("홍길동");

        Member member2 = new Member();
        member2.setName("홍길동");

        // when
        memberService.join(member1);
        IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2));
}

🔵 실행 결과



✅ findMembers() Test

class MemberServiceTest {

    MemberService memberService;
    MemoryMemberRepository memberRepository;

        @Test
        void findMembers() {
        Member member = new Member();
        member.setName("홍길동");
        memberService.join(member);
        List<Member> members = memberService.findMembers();
        assertThat(members.size()).isEqualTo(1);
    }
}

🔵 실행 결과



✅ findOne() Test

class MemberServiceTest {

    MemberService memberService;
    MemoryMemberRepository memberRepository;

        @Test
        void findOne() {
        Member member = new Member();
        member.setName("홍길동");
        memberService.join(member);
        Member result = memberService.findOne(member.getId()).get();
        assertThat(result.getId()).isEqualTo(member.getId());
    }
}

🔵 실행 결과




✨ 전체 테스트 수행시!

@BeforeEach@AfterEach를 추가한다.

    // 테스트 시작 전에 같은 메모리 레파지토리를 사용하게 됨
    // DI라고함(의존성 주입)
    @BeforeEach
    public void beforeEach(){
        memberRepository = new MemoryMemberRepository();
        memberService = new MemberService(memberRepository);
    }

    // 서비스에 있는 인스턴스와 다른 인스턴스임
    // MemoryMemberRepository memberRepository = new MemoryMemberRepository();

    @AfterEach
    public void clear(){
        memberRepository.clearStore();
    }



💾 MemberServiceTest 전체 코드

package com.hello.hellospring.service;
import com.hello.hellospring.domain.Member;


import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;

import org.junit.jupiter.api.Test;

import java.util.List;


import static org.assertj.core.api.AssertionsForClassTypes.assertThat;

import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.fail;

import com.hello.hellospring.repository.MemoryMemberRepository;


class MemberServiceTest {

    MemberService memberService;
    MemoryMemberRepository memberRepository;

    // 테스트 시작 전에 같은 메모리 레파지토리를 사용하게 됨
    // DI라고함(의존성 주입)
    @BeforeEach
    public void beforeEach(){
        memberRepository = new MemoryMemberRepository();
        memberService = new MemberService(memberRepository);
    }

    // 서비스에 있는 인스턴스와 다른 인스턴스임
    // MemoryMemberRepository memberRepository = new MemoryMemberRepository();

    @AfterEach
    public void clear(){
        memberRepository.clearStore();
    }

    @Test
    void join() {
        // given 주어진 것
        Member member = new Member();
        member.setName("홍길동");

        // when
        Long id = memberService.join(member);

        // then
        Member result = memberService.findOne(id).get();
        assertThat(member.getName()).isEqualTo(result.getName());
    }

    @Test
    void 중복_회원_예외() throws Exception{
        // given
        Member member1 = new Member();
        member1.setName("홍길동");

        Member member2 = new Member();
        member2.setName("홍길동");

        // when
        memberService.join(member1);
        IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2));

//        memberService.join(member1);
//        try{
//            memberService.join(member2);
//            fail();
//        } catch(IllegalStateException e){
//            assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다.");
//        }
    }

    @Test
    void findMembers() {
        Member member = new Member();
        member.setName("홍길동");
        memberService.join(member);
        List<Member> members = memberService.findMembers();
        assertThat(members.size()).isEqualTo(1);
    }

    @Test
    void findOne() {
        Member member = new Member();
        member.setName("홍길동");
        memberService.join(member);
        Member result = memberService.findOne(member.getId()).get();
        assertThat(result.getId()).isEqualTo(member.getId());
    }
}

🔵 실행결과

0개의 댓글