일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- python
- 카카오클라우드스쿨
- boj
- 11053
- 1110
- node
- Java #오븐시계 #백준
- 2447
- Spring #Java #Spring Boot #@BeforeEach #@AfterEach
- 코딩테스트
- Spring #Spring Boot #Java
- 카카오 클라우드 스쿨
- 파이썬
- 24479
- Spring
- Spring #Java #Spring Boot #싱글톤
- kakaocloud
- SpringTokenizer
- Spring #Java #Spring Boot
- 11054
- java
- 15552
- Java #백준 #코딩테스트
- kakaocloudschool
- 알고리즘
- 9020
- Java #코딩테스트
- sequelize
- 백준
- 7568
- Today
- Total
YoungSoo
스프링 입문 - 회원 서비스 테스트 본문
전 시간에 만든 회원 서비스를 테스트 해볼 예정이다.
전 테스트 시간에는 직접 test폴더에 패키지와 Test파일을 만들어 진행하였는데 더 좋은 방법이 있다.
Test 파일 생성

Ctrl + Shift + T 단축키를 이용해 자동으로 만들 수 있고 맨 밑에 체크만 해주면 된다.
Test

이렇게 자동으로 만들어준다.
MemberServiceTest

테스트 할 때 메소드 이름은 한글로 해도 상관이 없다.
Given = 값이 주어졌을때, When = 실행되었을때, Then = 나와야하는 결과테스트는 보통 3가지 순서대로 주어지는데 그게 바로 Given, When, Then이고 그렇기에 이렇게 나누어서만들어주면 좋다.
회원가입 테스트 코드를 만들었는데 이것은 너무 단순한 동작이고 테스트는 정상적인 동작도 중요하지만
예외적인 동작이 더 중요하다.
중복_회원_예외

예외가 더 중요하기 때문에 예외 테스트를 만들어주었다.
예외가 발생할 때 메세지가 전에 만든 validateDuplicateMember에서의 예외 메세지가 같은지 비교해주었다.
학교에서 예외처리로 배우는 것은 대부분 try-catch문으로 알고 있었는데 이러한 예외테스트 때문에
비효율적이라고 해서 assertThrows라는 것을 사용해주는데 이것은 예외가 발생했을 때IllegalStateException.class가 발생하는지 알려주고 memberService.join(member2)를 넣으면 예외가된다고 알려주는 것이다.
이대로 실행한다면 문제없이 돌아가겠지만 전 테스트 시간 처럼 member에 hello가 아니라 spring가 들어간다면
오류가 날 것이다. 그렇기 때문에 저장된 데이터를 초기화해줘야한다.
하지만 MemberService밖에 없기 때문에 클리어가 안 되기 때문에 MemoryMemberRepository 객체를
만들어주어야 하고 그냥 만들면 서로 다른 객체 두 개를 만들어 주는 것이기 때문에 같은 객체로 사용하게 하는게 좋다.
수정

MemberService로 돌아가 위와 같이 수정해주고 Ctrl + N을 눌러 생성자를 만들어주어 외부에서 넣도록
바꾸어 준다.
@BeforeEach

@BeforeEach 어노테이션을 사용해 동작하기 전에 넣어주도록 한다.
@BeforeEach는 각 테스트 실행 전에 호출되며 테스트가 서로 영향이 없도록 항상 새로운 객체를 생성하고, 의존관계도
새로 맺어준다
해당 글은 김영한 님의 인프런 강의를 보고 정리한 글 입니다.
[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의
스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런...
www.inflearn.com
'BE > Spring' 카테고리의 다른 글
스프링 입문 - 자바 코드로 스프링 빈 등록하기 (0) | 2022.07.07 |
---|---|
스프링 입문 - 컴포넌트 스캔과 자동 의존관계 설정 (0) | 2022.07.07 |
스프링 입문 - 회원 서비스 개발 (0) | 2022.07.07 |
스프링 입문 - 회원 리포지토리 테스트 케이스 작성 (0) | 2022.07.07 |
스프링 입문 - 회원 도메인과 리포지토리 만들기 (0) | 2022.07.06 |