Spring Boot 테스트 코드의 DB 연결 문제

Kim jisu·2025년 4월 23일
0

 Debugging Note

목록 보기
23/37

application내에서 test성공했는데, build시 test 실패 오류 발생.

🚨 문제 상황

Spring Boot 프로젝트에서 테스트 코드를 실행할 때 데이터베이스 연결 관련 오류가 발생했습니다. 테스트 환경과 실제 애플리케이션 환경에서 환경 변수 파일(.env)을 참조하는 방식에 차이가 있어 발생한 문제였습니다.

Error creating bean with name 'dataSource': Failed to determine a suitable driver class

🔍 원인 분석

Spring Boot 애플리케이션을 실행할 때와 테스트를 실행할 때 작업 디렉토리가 다릅니다:

  1. 애플리케이션 실행: 프로젝트 루트 디렉토리에서 실행
  2. 테스트 실행: target/test-classes 또는 테스트 리소스 디렉토리에서 실행

이로 인해 환경 변수 파일(.env)을 찾는 경로가 달라져야 했습니다.

💡 해결 방법

1. 테스트용 Properties 파일 추가

src/test/resources/application-test.properties 파일을 생성하고 테스트 환경 설정을 추가했습니다.

2. 환경 변수 파일 경로 수정

기존 설정 (application.properties):

spring.config.import=optional:file:.env[.properties]

수정된 설정 (application-test.properties):

spring.config.import=optional:file:../.env[.properties]

상위 디렉토리(../)를 참조하도록 수정하여 테스트 실행 시에도 루트 디렉토리의 .env 파일을 찾을 수 있게 했습니다.

3. 테스트 클래스에 테스트 프로파일 활성화

모든 테스트 클래스에 @ActiveProfiles("test") 어노테이션을 추가했습니다:

@SpringBootTest
@ActiveProfiles("test")
public class YourTestClass {
    // 테스트 코드
}

✅ 결과

위의 설정 변경 후, 테스트 코드가 성공적으로 DB에 연결되어 오류 없이 실행됐습니다.

💻 배운 점

  1. Spring Boot에서 테스트 환경과 애플리케이션 환경의 실행 컨텍스트 차이를 이해하게 됐습니다.
  2. @ActiveProfiles 어노테이션을 통해 테스트별로 다른 환경 설정을 적용할 수 있다는 것을 알게 됐습니다.
  3. spring.config.importoptional: 접두사를 사용하면 설정 파일이 없어도 애플리케이션 실행에 영향을 주지 않는다는 점을 배웠습니다.

🔄 추가 참고 사항

  • 이 방법은 환경 변수를 .env 파일로 관리하는 프로젝트에 적용 가능합니다.
  • 테스트 환경에서는 실제 DB 대신 H2와 같은 인메모리 데이터베이스를 사용하는 것도 좋은 대안입니다.
profile
Dreamer

0개의 댓글