반응형
  • persist는 DB에 바로 저장되지 않고 commit이 하는 순간 JPA 영속성 콘텍스트가 있는 멤버객체가 insert문이 만들어짐
  • Transactional : rollback 하기 때문에 commit 해서 DB결과를 볼 수 있음

 

1. @Rollback(false) - commit됨

@RunWith(SpringRunner.class)    // 순수 단위테스트가 아닌 DB까지 JPA가 돌아가는 과정을 테스트하기 위함
@SpringBootTest
@Transactional
public class MemberServiceTest {

    @Autowired MemberService memberService;
    @Autowired MemberRepository memberRepository;

    @Test
    @Rollback(false)
    public void 회원가입() throws Exception {
        //given
        Member member = new Member();
        member.setName("kim");

        //when
        Long joinedId = memberService.join(member);

        //then
        assertEquals(member, memberRepository.findOne(joinedId));
    }
 }

 

2. em.flush(); - insert DB반영되지만 rollback됨

@RunWith(SpringRunner.class)    // 순수 단위테스트가 아닌 DB까지 JPA가 돌아가는 과정을 테스트하기 위함
@SpringBootTest
@Transactional
public class MemberServiceTest {

    @Autowired MemberService memberService;
    @Autowired MemberRepository memberRepository;
    @Autowired EntityManager em;

    @Test
    public void 회원가입() throws Exception {
        //given
        Member member = new Member();
        member.setName("kim");

        //when
        Long joinedId = memberService.join(member);

        //then
        em.flush();
        assertEquals(member, memberRepository.findOne(joinedId));
    }
 }

 

 

인프런 실전! 스프링 부트와 JPA 활용 1 - 회원서비스 테스트

반응형