테스트에서 @Transactionl어노테이션을 쓰면 테스트 내에서 진행하는 모든 트랜잭션 관련 작업을 하나로 묶어 줄 수 있다.
@Transactionl은 애플리케이션의 클래스에 적용할 때와 디폴트 속성은 동일하다.
1. @Transactional
중요한 차이점은,
테스트용 트랜잭션은 테스트가 끝나면 자동으로 롤백된다는 것이다.
테스트에 적용된 @Transactional은 기본적으로 트랜잭션을 강제 롤백시키도록 설정~
롤백 테스트 가능 ㅎㅎ 굳
2. @Rollback
그런데,,, 트랜잭션을 커밋시켜서 테스트에서 진행작업을 DB 반영하고 싶다면?!
@Rollback 어노테이션 사용!
@Rollback의 기본값은 true라서
트랜잭션은 적용되지만 롤백을 원치 않는다면 @Rollback(false) 라고 해주면 된닷!
3. @TransactionConfiguration
테스트 클래스의 모든 메소드에 트랜잭션을 적용하면서 모든 트랜잭션이 롤백되지 않고 커밋되게 하려면?!
일일히 메소드에 @Rollback(false)하지말고,
클래스레벨에 부여할 수 있는 @TransactionConfiguration 사용
@Transactional @TransactionaConfiguraion(defaultRollback=false) public class Test{ ... ... } |
'DEVELOP > Backend' 카테고리의 다른 글
Django 시작하기 [1] Python , Django 설치 및 프로젝트 생성 (0) | 2020.03.18 |
---|---|
Spring에서 Async 처리 (@Async ) (0) | 2020.03.06 |
트랜잭션 속성 @Transactional (0) | 2019.07.29 |
Filter, Interceptor, AOP의 차이 이해하기~! (0) | 2019.07.26 |
RestTemplate 를 이용하여 API Get 하기 (0) | 2019.06.12 |