회원 기능 테스트
2023. 5. 10. 08:25ㆍ카테고리 없음
package jpabook.jpashop.service;
import jakarta.persistence.EntityManager;
import jakarta.transaction.Transactional;
import jpabook.jpashop.domain.Member;
import jpabook.jpashop.repository.MemberRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.junit4.SpringRunner;
import static org.junit.Assert.*;
@RunWith(SpringRunner.class) // Junit 실행할때 스프링이랑 엮어서 사용하는 것.
@SpringBootTest // 스프링 부트를 띄운 상태로 테스트를 하려면 필요.
@Transactional // 트랜젝션 걸고 테스트 시작하고 데이터를 롤백시켜줌.
public class MemberServiceTest {
@Autowired MemberService memberService;
@Autowired
MemberRepository memberRepository;
// @Autowired EntityManager em;
@Test
//(expected = IllegalStateException.class)
// try { //
// memberService.join(member2);
// } catch (IllegalStateException e) {
// return;
// }
@Rollback(false)
public void 회원가입() throws Exception {
//Given
Member member = new Member();
member.setName("kim");
//When
Long saveId = memberService.join(member);
//Then
//em.flush(); join(member)에 member가 query로 db에 반영됨.
assertEquals(member, memberRepository.findOne(saveId));
}
@Test(expected = IllegalStateException.class)
public void 중복_회원_예외() throws Exception {
//Given
Member member1 = new Member();
member1.setName("kim");
Member member2 = new Member();
member2.setName("kim");
//When
memberService.join(member1);
memberService.join(member2);
// try {
// memberService.join(member2); //예외가 발생해야 한다.
// } catch (IllegalStateException e) {
// return;
// }
//Then
fail("예외가 발생해야 한다.");
//위에 코드가 쭉내려오지 않도록 걸어두는것. 이쪽에 오면 예외가 발생해야한다고.
}
}
spring:
# datasource:
# url: jdbc:h2:mem:test
# username: sa
# password:
# driver-class-name : org.h2.Driver
# jpa:
# hibernate:
# ddl-auto: create-drop
# properties:
# hibernate:
# show_sql: true
# format_sql: true
logging:
level:
org.hibernate.SQL: debug
org.hibernate.type: trace
출처 : 인프런 강의: 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발