작성
·
186
0
다음과 같이 코드를 실행하면 강의 화면처럼 "Rolled back transaction for test"가 나와야 하는데 그렇지 않고 H2에서도 컬럼만 있는 빈 테이블입니다. 뭐가 문제일까요?
package jpabook.jpashop;
import com.fasterxml.jackson.databind.deser.std.StdKeyDeserializer;
import org.assertj.core.api.Assertions;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;
@RunWith(SpringRunner.class)
@SpringBootTest
public class MemberRepositoryTest {
@Autowired
MemberRepository memberRepository;
@Test
@Transactional
public void testMember() throws Exception {
//given
Member member = new Member();
member.setUsername("memeberA");
//when
Long saveId = memberRepository.save(member);
Member findMember = memberRepository.find(saveId);
//then
Assertions.assertThat(findMember.getId()).isEqualTo(member.getId());
Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername());
}
}
답변 5
2
안녕하세요. sichelmond님, 공식 서포터즈 David입니다.
스프링 6 이후부터는 로그 내용이 변경되었습니다.
먼저, application.yaml 파일의 로그 관련 옵션을 다음과 같이 설정해 주세요.
@Rollback(false)를 제거해 주세요.
그러면 롤백 로그(강의 내 로그 내용과 동일하지 않음)를 확인할 수 있습니다.
logging:
level:
root: trace(또는 debug)
// 디버그 레벨이 trace 일 때
TRACE 73338 --- [ Test worker] o.s.t.c.transaction.TransactionContext : Rolled back transaction (1) for test context: ..
// 디버그 레벨이 debug 일 때
DEBUG 73219 --- [ Test worker] o.s.t.c.transaction.TransactionContext : Rolled back transaction (1) for test class ..
스프링 6 이후 버전
스프링 6 이전 버전
감사합니다.
0
안녕하세요. 같은 상황에서, 의문점이 있어 질문 남깁니다.
junit4 및 junit5 환경 모두에서
application.yml 파일에 org.hibernate.SQL: debug 설정 시,
롤백 문구가 확인되지 않고, dml 문구가 확인되지 않습니다.
application.yml 파일에 root: debug 설정 시,
변경된 롤백 문구와 dml 문구는 확인이 되는데,
org.hibernate.SQL: debug 로 기대한 로그보다 많은 로그를 확인하게 됩니다.
스프링 6 환경에서 org.hibernate.SQL: debug 의 간추린 로그를 확인하고 싶습니다.
0
0
답변 감사합니다! 추가하고 의존성 갱신 후 실행했는데 그대로라서 수정한 파일 다시 공유드립니다!
https://drive.google.com/file/d/1Zgtm9YTS0xY5DFIhPeB-NyiBFXP6Wg9P/view?usp=sharing
코드 다시 확인해보았는데, 코드엔 문제가 없습니다.
h2를 실행시킨 상태에서 확인한게 맞을까요?
h2가 실행중인데도 동일한 문제가 발생한다면
jpashop이라는 이름으로 h2를 연결하던 설정을 강의를 참고하여 jpashop2로 생성해서 다시 확인해보시겠어요?
.
application.yml
h2(h2는 초기 설정부터 처음부터 진행)
0
문제 영역 실행 방법 :
MemberRepositoryTest.java 파일에서 @Test, @Transactional, @Rollback(false) 확인 후 실행시킵니다.
문제 상세 설명 : 콘솔 창에서 롤백 관련 내용이 안 나옵니다. Rollback(false)가 작동하지 않아 H2에서 MEMBER테이블 확인하면 행(ID, USERNAME)만 뜨고 memberA 데이터가 없습니다.
공유 링크 : https://drive.google.com/file/d/1ZVi_DXU-ZNU0igcaoAQ5IUcMUbhWRp8_/view?usp=drive_link
오오 감사합니다! trace를 하니 콘솔에 끝도 없이 동일한 문구가 계속 나와서 debug로 바꾸니 해결되었어요!