Zayson
A to Zayson!
Zayson
전체 방문자
오늘
어제
  • 분류 전체보기 (132)
    • Computer Science (20)
      • Network (4)
      • DB (12)
      • OS (4)
    • Algorithm (32)
      • 완전탐색(Brute-Force) (3)
      • 그리디(Greedy) (6)
      • 투포인터(Two-Pointer) (1)
      • 그래프(Graph) (5)
      • BFS & DFS (9)
      • 구현, 시뮬레이션(Implementation) (5)
      • 다이나믹 프로그래밍(DP) (3)
    • Backend (51)
      • Spring Boot (19)
      • JPA (16)
      • Kafka (2)
      • Java (13)
      • Kotlin (1)
    • DevOps (1)
      • Jenkins (5)
      • Oracle Cloud Infrastructure (1)
      • Kubernetes & Docker (1)
    • Trouble Shooting (3)
      • JPA (1)
      • Spring Boot (2)
    • 회고 (5)
      • 엔빵 프로젝트 포스트 로드맵 (1)
      • 2022년 (4)
    • Kafka (7)
      • Kafka (5)
      • Kafka Connect (2)
    • 기술 서적 (6)
      • 데이터 중심 애플리케이션 설계 (3)
      • 개발자가 반드시 정복해야할 객체 지향과 디자인 패턴 (2)
      • 가상 면접 사례로 배우는 대규모 시스템 설계 기초 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

태그

  • JPA
  • kafka
  • Backend
  • 엔빵프로젝트
  • 관계형 데이터베이스 실전 입문
  • 구현
  • 그리디
  • CS
  • BFS
  • SpringBoot
  • 라이브스터디
  • spring boot
  • Java
  • dfs
  • Computer science
  • 완전탐색
  • 프로그래머스
  • 나 혼자 스프링부트!
  • Kafka Connect
  • 백준

최근 글

티스토리

hELLO · Designed By 정상우.
Zayson

A to Zayson!

@DataJpaTest  사용 시 Failed To Replace DataSource with an Embedded database for test 이슈
Trouble Shooting/Spring Boot

@DataJpaTest 사용 시 Failed To Replace DataSource with an Embedded database for test 이슈

2022. 5. 22. 16:59

상황

JPA를 이용해 Persistence Layer 로직을 구현한 후 해당 로직들을 @DataJpaTest를 이용해 테스트를 하려는 도중 “Failed To Load ApplicationContext”예외가 발생하면서 “Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource”에러 메세지가 발생되었다.

문제 파악

일단 Error Creating bean with name datasource.. 라는 문구에서 Datasource 관련 설정에서 문제가 발생했구나라고 생각했다.

하지만, application.yml 파일은 정상적으로 설정이 되어있었다.

 

그래서 에러 메세지를 조금 더 내려보니 @AutoConfigureTestDatabse에서 문제가 발생한 것을 확인할 수 있었다.

@AutoConfigureTestDatabase 애노테이션은@DataJpaTest 애노테이션에 정의되어 있다.

@AutoConfigureTestDatabase 애노테이션을 들여다보자.

마지막에 AutoConfigureTestDatabase에서 유발되었다는 메세지에 적혀있는 “Embeded Database”가 Default Connection으로 등록되어 있는 것처럼 보인다.

 

그래서 한 번더 EmbededDatabaseConnection을 까봤다. H2데이터 베이스와 같은 인메모리 데이터베이스가 TestDatabase 커넥션으로 등록되는 것을 확인할 수 있었다.

현재 프로젝트는 개발 단계에서도 인메모리 데이터베이스가 아닌 물리적 데이터베이스인 MySQL을 사용하고 있다.

그러다 보니, @DataJpaTest에서 제공하는 테스트 데이터베이스 관련 빈을 등록하는 과정에서 에러가 발생함을 알 수 있었다.

해결 방법

@AutoConfigurTestDatabase의 속성 중 REPLACE 값을 NONE으로 설정해준다.

해당 속성을 설정하면 application에 기본적으로 등록되어 있는 Datasource를 대체하지 않기 때문에 우리가 사용하는 MySQL을 사용하는 것이 가능하다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'Trouble Shooting > Spring Boot' 카테고리의 다른 글

java.lang.UnsupportedOperationException 에러  (0) 2022.06.20
    'Trouble Shooting/Spring Boot' 카테고리의 다른 글
    • java.lang.UnsupportedOperationException 에러
    Zayson
    Zayson
    공부한 내용을 정리하는 공간

    티스토리툴바