250x250
Notice
Recent Posts
Recent Comments
Link
관심쟁이 영호
[#9.3] 스프링 부트 ㅣ Spring Boot ㅣ 기능 테스트, 테스트 코드 짜기 본문
반응형
1. 테스트 코드로 살펴볼 점
- 회원가입 성공
- 회원가입 중복이 예외처리 되는지.
바로 코드로 살펴보자.
2. MemberService에서 ctrl + shift + T 입력하고 코드를 작성해준다.
//MemberServiceTest
package jpashop.jpashop.service;
import jpashop.jpashop.domain.Item.Member;
import jpashop.jpashop.repository.MemberRepository;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.EntityManager;
import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest
@Transactional //test코드에서 transaction이 있으면 insert를 한다음 롤백해버린다.
class MemberServiceTest {
@Autowired
MemberService memberService;
@Autowired
MemberRepository memberRepository;
@Autowired
EntityManager em;
@Test
@Rollback(false) //롤백을 하지 않게 하기 위해서 - 실제 db에 insert가 되는 것을 보고싶을 때 사용
public void 회원가입() throws Exception {
//given
Member member = new Member();
member.setName("cha");
//when
Long savedId = memberService.join(member);
//then
em.flush(); //이렇게하면 insert문이 로그에 찍힌다.
assertEquals(member, memberRepository.findOne(savedId));
}
@Test
public void 중복회원예외() throws Exception {
//given
Member member1 = new Member();
member1.setName("cha1");
Member member2 = new Member();
member2.setName("cha1");
//when
memberService.join(member1);
try{
memberService.join(member2); //여기서 에러가 발생해야함
}catch(IllegalStateException e){
return;
}
//then
fail("예외가 발생");
}
}
3. 회원가입(), 중복확인() 테스트가 정상 작동하는지 파악하자.
흐름을 보면
(1) Member 객체를 생성하고, name을 지정해준다.
그리고 Service로 set해주고, 비교한다.
(2) Member 객체를 이름이 똑같게 2개 생성해준다.
그리고 두개 다 set해준다.
이 때, IllegalStateException이 발생하고 catch문으로 실행 되고, fail에 던져진다.
4. 메모리 DB를 이용하자.
- 이것을 이용하는 이유는 실무에서 테스트를 해야할 때, 모든 DB를 설치하고 넣고 빼고 힘들다..
그래서 간편하게 사용할 수 있는 메모리 DB를 사용해준다.
(1) test 디렉터리에 resources 디렉터리를 만들어준다.
(2) resources에 application.yml을 main의 application.yml을 복사해준다.
(3) 생성해준 application.yml의 url을 메모리DB로 바꾸어준다.
(4) 메모리 DB코드는 jdbc:h2:mem:test 이다.
성공적으로 테스트가 되는 것을 알 수 있다.
본 강의는 인프런의 김영한 개발자님이 강의하고 계신
"실전! 스프링 부트와 JPA활용1 - 웹 애플리케이션 개발"을 수강하면서 정리한 글입니다.
300x250
'Bank-End > 인프런- Spring 공부' 카테고리의 다른 글
[#11.1] Spring Boot ㅣ 스프링 부트 ㅣ 주문 도메인 개발 (0) | 2021.04.15 |
---|---|
[#10] 스프링 부트 ㅣ Spring Boot ㅣ 상품 도메인 개발 (0) | 2021.04.14 |
[#9.2] 스프링 부트 ㅣ Spring Boot ㅣ Member 서비스 개발 (0) | 2021.04.12 |
[#8] SpringBoot ㅣ 스프링 부트 ㅣ어플리케이션 아키텍쳐 (0) | 2021.04.10 |
[#7.4] Spring Boot ㅣ 스프링 부트 ㅣ 작성한 Entity Class 점검, 기타 내용 (0) | 2021.04.09 |
Comments