테스트 코드를 작성하다 보면 실제로 사용하는 DB에 테스트 코드가 영향을 미치는 경우가 발생할 수 있다. 이를 방지하고자 테스트용 개발 환경을 분리하여 사용할 수 있다. prpoperties 또는 yml test 설정 파일을 통해 테스트 환경을 분리해보자
test 환경에서 H2 test 데이터베이스를 사용하였다. MYSQL 문법을 사용하므로 MODE=MySQL
설정을 추가해준다.
# Test profile
spring.config.activate.on-profile=test
spring.datasource.url=jdbc:h2:mem:testdb;MODE=MySQL
spring.datasource.driverClassName=org.h2.Driver
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
spring.jpa.properties.hibernate.format_sql=true
spring.config.activate.on-profile
을 test로 설정해준다. test 파일을 따로 분리하지 않고 application.yml 파일에 같이 작성해도 된다.
# Test profile
spring:
config:
activate:
on-profile: test
datasource:
url: jdbc:h2:mem:testdb;MODE=MySQL
driverClassName: org.h2.Driver
jpa:
show-sql: true
hibernate:
ddl-auto: update
dialect: org.hibernate.dialect.H2Dialect
format_sql: true
이렇게 설정 파일을 작성해주면 test profile을 사용할 수 있다. 실제 테스트 클래스에서 @ActiveProfiles("test")
애너테이션을 붙여주면 test 설정 파일로 해당 테스트 클래스를 테스트 할 수 있다.