Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

프로그래밍 끄적끄적

[SpringBoot] 스프링 입문 - 회원 관리 예제(서비스 테스트) 본문

백엔드/스프링

[SpringBoot] 스프링 입문 - 회원 관리 예제(서비스 테스트)

soeunkk 2021. 7. 28. 15:18

테스트는 애플리케이션 빌드에 포함되지 않으므로 한글로 작성해도 된다.

테스트를 작성할 때 //given //when //then으로 나누어서 짜는 습관을 들이자.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// 테스트 생성 단축키: ctrl + shift + T
// 이전 실행 반복 단축키: shift + f10
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("이미 존재하는 회원입니다.");
/*
        try {
            memberService.join(member2);
            fail(); //IllegalStateException 이 발생하지 않고 여기까지 오면 중복확인이 안되는 것
        } catch (IllegalStateException e1) {
            assertThat(e1.getMessage()).isEqualTo("이미 존재하는 회원입니다.");
        }
*/
        //then
    }
 
    @Test
    void findMembers() {
    }
 
    @Test
    void findOne() {
    }
}
cs

Line 11) new MemberService(memberRepository);

생성할 때 외부에서 넣어주는 것을 DI(Dependency Injection)라고 함

 

Line 44) assertThrows([예외 클래스], [발생하는 상황])

예외처리가 이루어져야 하는 상황에는 assertThrows를 통해 확인할 수 있다.

 

Line 45) assertThat(e.getMessage()).isEqualTo([기대 메시지])

assertThrows 객체의 getMessage() 메서드를 통해 예외 메시지를 비교함으로써 기대하는 예외가 이루어졌는지 확인한다.

Comments