inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! Querydsl

스프링 부트 설정 - JPA, DB

테스트db 분리하기 yml

해결된 질문

154

ssshhh

작성한 질문수 36

0

1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]
강의처럼 스프링부트 프로젝트에서 test디렉토리의 yml파일에 별도의 데이터베이스 설정을 하지 않는다면 임베디드 데이터베이스(h2)를 사용할 것으로 예상하고, 이 때 테스트를 진행했는데 main디렉토리의 yml파일 데이터베이스를 사용하는 것으로 보입니다.
이는 @SpringBootTest를 사용해서 테스트를 실행했기 때문이며, 애플리케이션 전체 컨텍스트를 로드 하는데 설정 파일application.yml도 포함해서 로드하기 때문입니다.

만약 테스트 db를 main db와 다르게 임베디드 데이터베이스 를 사용하려면, 테스트의 yml 파일에 profile을 설정해 주면 가능합니다.

db2에서 배웠던 내용인데, 사고 과정이 역순이기도 하고 ai의 정리를 한번 듣고 싶어서 질문 올려보았습니다.

java jpa

답변 1

1

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 김상형님께서 질문해주신 내용을 바탕으로, Spring Boot에서 테스트 환경과 실제 환경의 데이터베이스를 분리하는 방법에 대해 정리해보겠습니다.

테스트 환경에서 임베디드 데이터베이스를 사용하고자 하시는 경우, 스프링 부트에서는 프로파일을 활용하여 설정을 구분하는 것이 일반적입니다. @SpringBootTest는 애플리케이션의 모든 설정을 로드하기 때문에, 기본적인 설정을 덮어쓰지 않는 한 테스트에서도 src/main/resources/application.yml의 설정이 적용될 수 있습니다.

이 문제를 해결하기 위해 다음과 같은 방법을 사용할 수 있습니다:

  1. 프로파일 설정: 테스트용 프로파일을 생성합니다. 예를 들어, src/test/resources/application-test.yml 파일을 만들고, 여기에 테스트 환경에 맞는 데이터베이스 설정(H2 등을 포함)을 기입합니다.

  2. @ActiveProfiles 어노테이션 사용: 테스트 클래스에 @ActiveProfiles("test") 어노테이션을 추가하여, 테스트 실행 시 ‘test’ 프로파일이 활성화되도록 설정합니다. 이렇게 하면 스프링 부트는 application-test.yml의 설정을 사용하게 됩니다.

@ActiveProfiles("test")
@SpringBootTest
public class YourTestClass {
    // Your test cases here
}

유사한 질문과 답변이 있습니다. 아래 링크도 참고하시기 바랍니다:

이 방식으로 설정 파일을 분리하면, 테스트 환경과 실제 운영 환경의 데이터베이스 설정을 따로 관리할 수 있어, 데이터베이스의 오작동을 방지할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

SpringBoot 4.X에서의 Querydsl 설정

0

122

2

querydsl 오픈소스에 대한 질문

1

87

1

예제에서의 카운트 쿼리에서 join문과 where문은 필요없지 않나요?

0

118

1

Querydsl 6.X버전에 대해서 어떻게 생각하시나요?

0

336

2

여러 테이블 조인하여 통계치를 구하고자 할 때 어떤 방법이 더 효율적일까요

1

78

1

fetchResults()는 더이상 권장되지 않는다는데 맞나요?

0

168

1

querydsl sum() 메서드 없어요.

0

165

2

build 디렉터리 생성

0

147

2

자바 ORM 표준 JPA 프로그래밍 - 기본편 듣고 바로 학습해도 괜찮을까요?

0

119

2

현재 Querydsl에서 from절 서브쿼리를 지원하나요?

0

97

1

오타 제보 드립니다.

0

76

2

벌크 연산과 flush, clear

0

81

1

Run As Intellij 로 변경시 Q타입 import 불가

0

93

1

QHello import하기 문제 발생

0

152

2

등록된 함수 보는법(H2Dialect) 질문

0

73

2

5.0부터 Querydsl은 향후 fetchCount() , fetchResult() 를 지원하지 않기로 결정했다고 하는데 이에 맞는 강의

1

203

2

[환경설정 PDF 부트 3.0이후 설명 질문] build.gradle에 compileQuerydsl을 정의하지 않은 상태에서 Gradle->Tasks->other->compileQuerydsl을 클릭하라고 하는 이유가 무엇인가요??

1

207

1

querydsl 설정 문제

0

225

2

quey dsl 설정부분

0

160

2

count 쿼리 관련 질문입니다!

0

77

1

stringtemplate를 이용하여 where절 검색 방법 질문 드립니다.

0

92

1

답변부탁드리겠습니다.

0

92

2

(OrderSpecifier)관련 내용 어디있을가요

0

67

1

중급문법 벌크연산에서

0

84

2