Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Intellij
- trouble shooting
- spring boot
- 아키텍처
- EC2
- CI/CD
- DevOps
- Redis
- testcode
- 유효성 검사
- 프로그래머스
- MSA
- Til
- 객체지향원칙
- 어노테이션
- 테스트 코드
- Java
- Github Actions
- AWS
- algorithm
- querydls
- Kafka
- swagger
- springboot
- rabbitmq
- aop
- JPA
- 멀티 모듈
- JWT
- docker
Archives
- Today
- Total
개발노트
25.02.25 통합테스트 DB 환경 분리 본문
개요
단위 테스트를 할 때는 상관없었는데 통합테스트를 진행하니 운영중인 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 프로파일이 정상적으로 적용 성공
'Spring Boot' 카테고리의 다른 글
25.03.07 Redis를 활용한 Spring Boot 캐싱 전략 (0) | 2025.03.07 |
---|---|
25.02.20 JWT 리팩토링 과 헥사고날 아키텍처 도입 (0) | 2025.02.20 |
25.02.19 QueryDSL (1) | 2025.02.19 |
25.02.17 JWT 검증 필터 와 테스트 코드 any() (0) | 2025.02.17 |
25.02.13 Spring Boot AOP (0) | 2025.02.13 |