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으로 자동 설정된다.