이마닷의 블로그

[spring] test 환경 분리하기 본문

java + kotlin

[spring] test 환경 분리하기

움나나움 2021. 1. 11. 22:15

 

 

spring boot는 기본적으로 TDD 환경을 제공한다. TDD를 성공적으로 수행하기 위해서는 실제 서버가 띄워지는 환경과 test가 이루어지는 환경은 분리되어야 한다. 가장 기본적으로 분리가 필요한 것은 데이터베이스이다. JPA를 활용해 관계형 db를 사용하는 서비스에서 db 환경이 분리되어 있지 않다면, 테스트 도중 발생한 db의 변화가 실제 서비스에까지 영향을 미칠 수 있다. 이러한 분리를 spring boot에서는 별도의 profile을 만들어 관리할 수 있다.

 

1. application.yml

spring:
  profiles:
    active: prod
    include: prod, test
  jpa:
    show_sql: true
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQL57Dialect
        storage_engine: innodb
    generate-ddl: true
    hibernate:
      ddl-auto: update

- active : prod 환경의 profile을 활성화

- include : 배포환경(prod)와 테스트환경(test)의 프로필을 모두 포함한다.

- hibernate.ddl-auto: update : db를 매번 새로 만드는 ddl 쿼리를 날리지 않고, 변경사항이 있을 때만 ddl을 사용.

 

2. application-prod.yml

spring:
  jpa:
    show_sql: true
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQL57Dialect
        storage_engine: innodb
    generate-ddl: true
    hibernate:
      ddl-auto: update
  datasource:
    driver-class-name: org.mariadb.jdbc.Driver
    url: jdbc:mariadb://{host 주소}:{port 번호}/{db 이름}?serverTimeZone=Asia/Seoul
    name: {db 이름}
    username: {user}
    password: {password}

- 현재 배포 환경 서버의 호스트 주소와 db를 사용.

 

3. application-test.yml

spring:
  jpa:
    show_sql: true
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQL57Dialect
        storage_engine: innodb
    generate-ddl: true
    hibernate:
      ddl-auto: update
  datasource:
    driver-class-name: org.mariadb.jdbc.Driver
    url: jdbc:mariadb://{host 주소}:{port 번호}/{testdb 이름}?serverTimeZone=Asia/Seoul
    name: {testdb 이름}
    username: {user}
    password: {password}

- 현재 test 환경의 호스트 주소와 db를 사용. 해당 프로젝트에서는 동일한 host 내에서 서로 다른 db만 사용했다. (ex. project, project_test)

'java + kotlin' 카테고리의 다른 글

[spring] Nested JSON 만들기  (1) 2020.12.25
[spring] springboot test (draft)  (0) 2020.12.20
[spring] java-spring 기본 개념  (0) 2020.07.29
Comments