프로그래밍 끄적끄적
[SpringBoot] 스프링 입문 - 회원 관리 예제(서비스 테스트) 본문
테스트는 애플리케이션 빌드에 포함되지 않으므로 한글로 작성해도 된다.
테스트를 작성할 때 //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() 메서드를 통해 예외 메시지를 비교함으로써 기대하는 예외가 이루어졌는지 확인한다.
'백엔드 > 스프링' 카테고리의 다른 글
[SpringBoot] 스프링 입문 - 회원 웹 기능 (0) | 2021.08.03 |
---|---|
스프링 입문 - 컴포넌트 스캔과 자동 의존관계 설정 (0) | 2021.07.29 |
[SpringBoot] 스프링 입문 - 회원 관리 예제(서비스) (0) | 2021.07.28 |
[SpringBoot] 스프링 입문 - 회원 관리 예제(테스트 케이스 작성-리포지토리 테스트) (0) | 2021.07.28 |
[SpringBoot] 스프링 입문 - 회원 관리 예제(비즈니스 요구사항 정리, 도메인, 리포지토리) (0) | 2021.07.28 |
Comments