개발노트

25.02.25 통합테스트 DB 환경 분리 본문

Spring Boot

25.02.25 통합테스트 DB 환경 분리

ddong-kka 2025. 2. 25. 01:05

개요

단위 테스트를 할 때는 상관없었는데 통합테스트를 진행하니 운영중인 DB의 데이터도 테스트에 포함되어 문제가 발생했다. 이를 개선하기위해 통합테스트 환경에서는 H2 데이터베이스를 사용하도록 DB 환경을 분리해보겠다.

 

application-test.yml 파일 생성

기존의 apllication.yml 과 똑같은 위치에 application-test.yml파일을 생성해준다.

 

spring:
  datasource:
    driver-class-name: org.h2.Driver
    hikari.jdbc-url: jdbc:h2:mem:test_db;
    username: testdb
    password:

  jpa:
    hibernate:
      ddl-auto: create-drop
    show-sql: true

 

이 파일에는 테스트 환경에서 사용할 DB 설정을 작성한다. 예를 들어서 테스트 DB는 로컬이나 인 메모리 데이터베이스로 설정할 수 있다.

 

jdbc:h2:mem:testdb 는 메모리 내에서 DB 를 생성해 테스트가 끝나면 자동으로 삭제된다.

 

의존성 추가

  implementation 'com.h2database:h2'

 

h2 데이터 베이스 의존성을 추가한다.

 

통합 테스트 클래스에 @ActiveProfiles 어노테이션 추가

@ActiveProfiles("test") // application-test.yml을 기준으로 test 실행 환경을 구성합니다.
@SpringBootTest  // Spring 컨텍스트를 로드하여 통합 테스트 수행
@Transactional  // 각 테스트 후 롤백하여 데이터 정합성 유지
class UserServiceIntegrationTest {
......

 

 

테스트 클래스에 @ActiveProfiles("test")를 추가해 해당 테스트가 실행될때 application-test.yml을 사용하도록 지정한다.

동작시켜보자

 

결과 확인

 

 

로그 메시지와 커넥션 URL을 확인하면, "The following 1 profile is active: "test""가 출력되고 H2 test_db에 정상적으로 연결된 것으로 보인다.

즉, test 프로파일이 정상적으로 적용 성공