티스토리 뷰
Spring boot/JPA
03. JPA - Update 테스트 시 유의 사항 ( @Transactional, @Rollback(false) )
akatjd 2021. 6. 9. 15:38Repository에서 update 관련 쿼리를 변경하고 Junit에서 테스트시 실행이 불가하거나 자동적으로 스프링 부트가 테스트임을 알고 Rollback 하는 바람에 테스트가 정상적으로 이뤄졌는지 DB 확인이 불가능한 경우가 생김.
Junit 테스트시 메소드에 트랜젝션임을 명시하는 @Transactional 애노테이션을 적용시켜야 실행이 가능함.
@Transactional
@Test
public void viewCntUpdate() {
System.out.println(noticeRepository.updateViewCnt(1L));
}
이렇게 하면 정상적으로 쿼리를 짜거나 변경했다면 실행이 됨.
하지만 DB 확인시 적용되지 않음을 확인할 수 있음.
위에 말한데로 테스트임을 스프링 부트에서 인지하고 Rollback 하기 때문임.
따라서 롤백하지 않으려면 @Rollback(false) 애노테이션을 적용해줘야 DB에서 정상 데이터가 바뀜을 확인할 수 있음.
@Transactional
@Test
@Rollback(false)
public void viewCntUpdate() {
System.out.println(noticeRepository.updateViewCnt(1L));
}
'Spring boot > JPA' 카테고리의 다른 글
06. JPA - @Temporal annotation (0) | 2021.11.16 |
---|---|
05. JPA - Pageable을 통한 페이징 처리 (0) | 2021.06.15 |
04. JPA - Pageable (페이징 처리) (0) | 2021.06.14 |
02. JPA - orElseThrow() 관련 (0) | 2021.05.31 |
01. JPA - 스프링 부트 기본 JPA 설정 (0) | 2021.05.24 |
댓글