상황
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 |
---|