DEVELOP/Backend
테스트에서 @Transactionl 어노테이션
hyeoneee
2019. 7. 29. 16:51
테스트에서 @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{ ... ... } |