Spring
회원 도메인 개발
date
Oct 18, 2023
slug
스프링부트-JPA-활용1-4
status
Public
tags
실전! 스프링 부트와 JPA 활용 1
author
summary
[실전! 스프링 부트와 JPA 활용 1] 섹션 4 강의 정리
type
Post
thumbnail
updatedAt
May 28, 2024 12:34 PM
category
Spring
김영한
인프런
🍯 꿀팁📝 강의 정리테스트 코드 작성 시 @Transactional[1]. @Transactinal만 선언 시[2]. Rollback(false) or em.flush()격리된 데이터베이스를 테스트 환경에서 사용하기 ( H2DB )[1]. src/test 디렉터리 하위에 resources/~.yml 생성[2]. 데이터베이스 url 변경📎 출처
🍯 꿀팁
📝 강의 정리
테스트 코드 작성 시 @Transactional
코드
@RunWith(SpringRunner.class) @SpringBootTest @Transactional public class MemberServiceTest { @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; @Autowired EntityManager em; @Test @DisplayName("회원가입") @Rollback(false) public void 회원가입() throws Exception { //given Member member = new Member(); member.setName("김"); //when Long saveId = memberService.join(member); //then em.flush(); assertEquals(member, memberRepository.findOne(saveId)); } }
[1]. @Transactinal만 선언 시
- 터미널 출력

→ 실제 insert문 실행이 안되는 것으로 확인된다.
- 회원 테이블

Rolled back transaction for test:
스프링단에서 롤백되므로, flush되지 않음.
[2]. Rollback(false) or em.flush()
- 실제 insert문이 실행하는 과정을 보고 싶으면,
- @Rollback(false) 어노테이션
- 롤백하지 않으므로, DB에 데이터가 남게 됨
- EntityManager 선언 후, em.flush();
- flush로 em이 insert 쿼리는 날리지만, 이후 롤백으로 인해 DB에 데이터가 남지 않음
격리된 데이터베이스를 테스트 환경에서 사용하기 ( H2DB )
[1]. src/test 디렉터리 하위에 resources/~.yml 생성
- test 코드 실행 시, 해당 yml이 우선권을 가진다.
[2]. 데이터베이스 url 변경
url: jdbc:h2:mem:test