Spring boot 에서 in-memory-db로 테스트 진행하기 - h2

테스트의 DB는?

  • 테스트를 진행할 때 DB와 통신이 필요한 경우가 많다.
  • 스프링부트는 어플리케이션 내부에서 가상의 DB인 in-memory-db를 지원한다. 통합 테스트를 편리하게 수행하도록 도와준다.
  • 그 중 h2를 살펴본다.

세팅하기

  • 그래들 혹은 메이븐에 h2 의존성을 추가한다. 그래들은 아래와 같다.
    • runtimeOnly 'com.h2database:h2'
  • main/resources/application.yml에 아래와 같이 작성한다.
spring:
 datasource:
   url: jdbc:h2:mem:test # h2 support in-memory-db
   username: sa
   password:
   driver-class-name: org.h2.Driver

 jpa:
   hibernate:
     ddl-auto: create
   properties:
     hibernate:
       format_sql: true # log

logging.level:
  org.hibernate.SQL: debug
  • 어플리케이션을 실행하면 jdbc:h2:mem:test 로 db를 접속함을 확인할 수 있다.
  • 만약 테스트에만 사용한다면
    • test/resources/application.yml에 파일을 설정하고
    • 의존성은 testRuntimeOnly 으로 방식을 변경한다.
  • 사실, 특별한 설정 없이 비어있는 application.yml만 있더라도 인메모리DB가 자동적으로 반영된다.
  • jpa와 함께 비어있는 application.yml만 있을 경우, ddl-auto이 create-drop으로 자동 설정된다.