스프링 컨테이너와 DB까지 연결한 통합 테스트를 진행
MemberServiceIntegrationTest
package hello.hellospring.service; import hello.hellospring.domain.Member; import hello.hellospring.repository.MemberRepository; import hello.hellospring.repository.MemoryMemberRepository; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.transaction.annotation.Transactional; import static org.junit.jupiter.api.Assertions.assertThrows; @SpringBootTest @Transactional class MemberServiceIntegrationTest { @Autowired MemberRepository memberRepository; @Autowired MemberService memberService; @Test void 회원가입() { //given Member member = new Member(); member.setName("hello"); //when Long saveId = memberService.join(member); //then Member findMember = memberService.findOne(saveId).get(); Assertions.assertThat(member.getName()).isEqualTo(findMember.getName()); } @Test 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)); Assertions.assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다."); //then } }
@Autowired - 테스트 코드에서는 간편하게 필드 주입을 해도 무방하다.
@Transactional - 테스트 시작 전에 트랜잭션을 시작하고 , 테스트 완료 후에 항상 롤백한다. ( + @Commit)
@SpringBootTest - 스프링 컨테이너와 테스트를 함께 실행한다.
스프링 DB접근 기술 - 스프링 통합 테스트
스프링 컨테이너와 DB까지 연결한 통합 테스트를 진행
MemberServiceIntegrationTest
@Autowired - 테스트 코드에서는 간편하게 필드 주입을 해도 무방하다.
@Transactional - 테스트 시작 전에 트랜잭션을 시작하고 , 테스트 완료 후에 항상 롤백한다. ( + @Commit)
@SpringBootTest - 스프링 컨테이너와 테스트를 함께 실행한다.
'기록 > 스프링부트 시작하기' 카테고리의 다른 글