인프런 커뮤니티 질문&답변

김성태님의 프로필 이미지

작성한 질문수

스프링 DB 2편 - 데이터 접근 활용 기술

테스트 - 스프링 부트와 임베디드 모드

Rolled back transaction for test 로그 출력

해결된 질문

작성

·

236

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

안녕하세요.

강의 중에 강사님께서는 @Transactional 애노테이션을 사용하면 Rolled back transaction for test 로그가 뜨는데 저는 뜨지 않습니다.

 

[제 로그]

저는 강사님께서 올려주신 코드를 사용하지 않고 따로 start.spring.io를 통해 최신 버전을 사용하고 있습니다.

[버전정보]

  • 자바 버전: 17

  • 스프링 부트 버전: 3.2.5

[질문 사항]

강의 중간에 로깅 단계를 바꾸는 작업이 있었는데 제가 그 부분을 놓친 것인지, 아니면 스프링 부트의 버전이 달라지면서 transaction 로그를 출력하지 않도록 바뀐 것인지것인지, 아니면 application.properties 등에 다른 설정을 해야하는 것인지 궁금합니다!

답변 3

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 김성태님

확인해보니 스프링 최신 버전에 변경사항이 있었네요 🙂 메뉴얼에도 함께 반영해두었습니다.

감사합니다.

 

### 스프링 부트 3.x 로깅 변경 사항

만약 다음과 같은 트랜잭션 실행, 종료 로그가 보이지 않는다면 application.properties에 설정을 추가하자.

Began transaction (1) for test context [DefaultTestContext@3f3c966c testClass = 

...

Rolled back transaction for test...

 

org.springframework.test.context.transaction.TransactionContext에서 남기는 로깅이 INFO -> TRACE로 변경되었다. 참고로 핵심 정보만 출력하려면 DEBUG를 사용해도 된다.

application.properties

logging.level.org.springframework.test.context.transaction=trace

주의!

테스트는 test/resources 폴더에 있는 application.properties 파일을 수정해야 한다.

 

김성태님의 프로필 이미지
김성태
질문자

감사합니다!! 앞으로도 열공하겠습니다!

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 김성태님

도움을 드리고 싶지만 질문 내용만으로는 답변을 드리기 어렵습니다.

실제 동작하는 전체 프로젝트를 ZIP파일로 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx


주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요

 

추가로 다음 내용도 코멘트 부탁드립니다.

1. 문제 영역을 실행할 수 있는 방법

2. 문제가 어떻게 나타나는지에 대한 상세한 설명

 

링크: 공식 서포터즈

링크: 자주하는 질문

감사합니다.

김성태님의 프로필 이미지
김성태
질문자

답변 감사합니다.

 

[문제 영역 실행 방법]

Test의 ItemRepositoryTest를 실행

[문제에 대한 상세 설명]

ItemRepositoryTest를 실행하면 강사님께서는 updateItem, save, findItems 테스트가 끝날 때 마다 Rolled back transaction for test 로그가 발생하는데, 저는 위에 올린 사진과 같이 로그가 뜨지 않습니다. 반복해도 테스트가 성공하는 것으로 보아 롤백이 정상적으로 실행되는거 같기는 한테 로그를 눈으로 확인하고 싶어서 질문 드립니다. 감사합니다.

 

[구글 드라이브 링크]

https://drive.google.com/file/d/1GssI0EFu_--Q-6L31dWvfNJrlEbwr_Up/view?usp=share_link

0

안녕하세요, 인프런 AI 인턴입니다.

김성태님, Spring에서 @Transactional 애노테이션 사용시 “Rolled back transaction for test” 로그가 출력되지 않는 문제와 관련하여 질문해주셨군요. 이러한 로그는 주로 테스트 환경에서 트랜잭션이 롤백됨을 나타내며, 일반적으로 트랜잭션이 성공적으로 완료되었지만 테스트 목적으로 DB에 영구적인 변경을 적용하지 않기 위해 사용됩니다.

질문하신 내용과 유사한 상황에 대해 다른 사용자들이 경험한 바에 따르면, Spring Boot 버전의 변화가 로그 출력의 변화를 가져올 수 있습니다. 최신 버전의 Spring Boot(예: 3.x 시리즈)는 이전 버전과 다르게 일부 로그 설정이나 트랜잭션 관리 방식에 변경이 있을 수 있습니다.

직접적으로 동일한 질문에 대한 답변이 포함된 예시를 제공하기는 어렵지만, 아래의 내용을 참고하시어 문제 해결에 도움이 될 수 있습니다.

  • 강의에서 언급된 로깅 단계 변경 관련 부분을 다시 확인하세요. 스프링 부트 버전 변경에 따라 로그 출력 설정에 차이가 있을 수 있으므로, 강의의 해당 부분을 찾아보고 필요한 설정 변경이 있는지 확인해 보세요.

  • application.properties 혹은 application.yml 설정 파일에서 로깅 관련 설정을 다시 검토하세요. 특히, spring.jpa.show-sql, logging.level.org.springframework.transaction 등과 같은 로그 설정이 올바른지 확인이 필요합니다.

  • 스프링 프레임워크 혹은 스프링 부트의 공식 문서를 참조하여, 선택하신 버전에서 트랜잭션 관련 로깅을 어떻게 설정하는지 확인해 보세요.

  • 구체적인 설정 관련하여는 Spring Boot Reference Documentation에서 로깅 부분을 참조하시는 것이 도움이 될 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.