스프링부트 JPA 테스트 환경 구축

Donghyun Kim·2022년 2월 23일
0

✔ application 설정 파일 세팅

< application.yml >

	jpa:
    open-in-view: true
    hibernate:
      ddl-auto: #해당 부분의 다양한 옵션을 통해 DB TEST 환경 세팅 가능
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
      use-new-id-generator-mappings: false
    show-sql: true
    properties:
      hibernate.format_sql: true

• ddl-auto 옵션

create : 기존 테이블을 삭제하고 새로 생성 [ DROP + CREATE ]
create-drop : CREATE 속성에 추가로 어플리케이션을 종료할 때 생성한 DDL을 제거 [ DROP + CREATE + DROP ]
update : DB 테이블과 엔티티 매핑 정보를 비교해서 변경 사항만 수정 [ 테이블이 없을 경우 CREATE ]
validate : DB 테이블과 엔티티 매핑정보를 비교해서 차이가 있으면 경고를 남기고 어플리케이션을 실행하지 않음
none : 자동 생성 기능을 사용하지 않음

출처: https://dev-coco.tistory.com/85 [슬기로운 개발생활😃]

✔ 스프링부트 테스트 클래스 어노테이션

@SpringBootTest

  • 기본 스프링부트 테스트 환경을 제공해준다. (초기화 x)

@DataJpaTest

  • 인 메모리 형태의 내장형 DB를 사용하여 테스트한다. ex) H2 DB
  • 기본적으로 @Transactional이 설정되어 있어 쿼리가 실제로 실행되지는 않는다.

@AutoConfigureTestDatabase(replace = Replace.NONE)

  • @DataJpaTest를 이용하여 테스트 시 인 메모리 DB가 아닌 실제 DB를 이용하여
    테스트 하고 싶은 경우 해당 어노테이션을 추가해주면 된다.

@Commit

  • @DataJpaTest를 이용하여 테스트 시 쿼리를 실제로 실행 후 commit하여 연결된 DB에 쿼리의 내용이 적용되도록한다.

💬 참고자료

@SpringBootTest / @DataJpaTest 차이점 과 JPA 영속성 컨텍스트

profile
"Hello World"

0개의 댓글