• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

@Transactional은 테스트코드에서 무조건 에러를 뱉는다 ??!!

21.12.31 11:39 작성 조회수 337

1

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 네
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 비슷한 글은 있었지만 정확한 답변을 얻지 못함
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 네

[질문 내용]

전 테스트코드에서 Transactional annotation은 해당 transaction을 roll back 기능을 수행한다고 배웠습니다.
 
하지만 여기서 service에 transactional annotation을 붙여주고 있습니다.
 
구글링을 해보니 해당 어노테이션은 에러 , 혹은 격리레벨을 기준으로 다시 롤백기능을 수행합니다.
 
그런데 테스트코드에서는 무조건 rollback을 수행한다는 것은 에러를 계속 발생시킨다는 걸까요 ??! 해당 역할도 junit5가 수행하는건지 궁금합니다.

답변 1

답변을 작성해보세요.

1

안녕하세요. tlsrid88님

테스트 코드에서 트랜잭션이 있으면 해당 트랜잭션을 테스트 코드에서 시작합니다.

서비스에서 트랜잭션은 테스트 코드에서 시작한 트랜잭션에 참여하게 됩니다.

따라서 테스트 코드에서 시작한 트랜잭션이 롤백하게 되면 전체가 롤백된다고 이해하시면 됩니다.

해당 역할은 junit과 연동한 스프링 테스트 모듈에서 처리합니다.

관련해서 더 자세한 내용은 다음에 오픈 예정인 스프링 DB 접근 기술에서 자세히 설명드릴 예정입니다.

감사합니다.