인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

이지후님의 프로필 이미지

작성한 질문수

[개념은 호옹~, 실습 빡] 스프링 부트, 입문!

22 댓글 엔티티와 리파지터리(댓글 달기 전, 테스트 한번 하쉴?)

21강 자율 과제중 update

작성

·

28

0

 @Test
    @Transactional
    void update_성공_존재하는_id와_title만있는_DTO() {
        //예상
        Long id = 1L;
        String title ="title";
        ArticleForm dto = new ArticleForm(id, title,null);
        Article expected = new Article(id, title,"1111");

        //실제
        Article article = articleService.update(id, dto);
        //비교
        assertEquals(expected.toString(),article.toString());
    }

자율과제로 내주신 Test를 진행하다가 궁금한 점이 생겼습니다.
web에서 수정을 할 때는


2025-02-12 17:36:48.037 DEBUG 960 --- [nio-8080-exec-4] org.hibernate.SQL :

update

article

set

content=?,

title=?

where

id=?

2025-02-12 17:36:48.039 TRACE 960 --- [nio-8080-exec-4] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [VARCHAR] - [댓글]


위 와 같이 update 구문을 확인 할 수있었는데요.

Test를 진행 할때는 해당 구문의 log를 볼 수가 없었습니다.

그렇다면 위에 코드로 작성한 구문이 잘 못된 걸까요? 아니면
test시에는 구문이 안보이는건가요?

답변 2

0

홍팍님의 프로필 이미지
홍팍
지식공유자

@Transactional이 적용된 테스트는
테스트 후 바로 롤백이 진행되어
insert 및 update 쿼리를 수행하지 않습니다.

@Rollback(false)를 추가하여
로그를 확인해보세요.

이지후님의 프로필 이미지
이지후
질문자

감사합니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 이지후님.

테스트를 진행할 때, 실제 데이터베이스와의 상호 작용을 로그로 확인하기 어려운 경우가 있습니다. 특히, 테스트 환경에서는 특수하게 설정되지 않으면 로그가 나타나지 않을 수 있습니다.

테스트 환경에서 SQL 로그를 확인하기 위해 다음과 같은 설정을 진행해 보실 수 있습니다:

  1. application-test.properties 또는 application.yml에 로그 세팅 추가:

    spring.jpa.show-sql=true
    spring.jpa.properties.hibernate.format_sql=true
    logging.level.org.hibernate.sql=debug
    logging.level.org.hibernate.type=trace
    
  2. 위 설정을 통해 테스트 환경에서도 SQL이 어떻게 동작하는지 더 명확하게 볼 수 있습니다.

  3. 참고로, @Transactional 어노테이션이 걸린 테스트 메소드는 기본적으로 롤백되기 때문에, 변경사항이 실제 DB에 반영되지 않으며, 로그에서도 이를 보지 못할 수 있습니다.

아래 내용을 참고하시어 디버깅 및 테스트 환경 설정을 진행하시면 도움이 되실 것입니다. 추가적으로 같은 강의에서 관련 질문이 있을 수 있으니 “@Transactional 어노테이션 위치에 관하여 질문합니다 🙂” 게시물도 함께 확인해보시는 것을 추천드립니다.

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