728x90
반응형
- 테스트가 끝나고 나서 트랜잭션을 강제로 롤백해버리면 데이터가 깔끔하게 제거됨
테스트 순서
- 트랜잭션 시작
- 테스트 A 실행
- 트랜잭션 롤백
- 트랜잭션 시작
- 테스트 B 실행
- 트랜잭션 롤백
→ @BeforeEach , @AfterEach




- 트랜잭션 관리자는 PlatformTransactionManager 를 주입 받아서 사용하면 된다. 참고로 스프링 부트는 자동으로 적절한 트랜잭션 매니저를 스프링 빈으로 등록해준다.
- @BeforeEach : 각각의 테스트 케이스를 실행하기 직전에 호출된다. 따라서 여기서 트랜잭션을 시작하면 된다. 그러면 각각의 테스트를 트랜잭션 범위 안에서 실행할 수 있다.
- transactionManager.getTransaction(new DefaultTransactionDefinition()) 로 트랜잭션을 시작한다.
- @AfterEach : 각각의 테스트 케이스가 완료된 직후에 호출된다. 따라서 여기서 트랜잭션을 롤백하면 된다. 그러면 데이터를 트랜잭션 실행 전 상태로 복구할 수 있다.
- transactionManager.rollback(status) 로 트랜잭션을 롤백한다.
추가적으로 JdbcInsert든 JdbcTemplate이든 트랜잭션 동기화 매니저에 있는 커넥션을 갖다 쓰기 때문에 같은 트랜잭션을 사용한다. 그래서 이런 과정이 한 트랜잭션 안에서 수행될 수 있는 것이다.
728x90
반응형
댓글