현상
DB의 특정 데이터를 Select를 하기 위해 관련 소스 코드 구현 후 JUnit을 활용한 단위 테스트를 진행하였다.
그러나 DataSource 관련 에러가 났다. DB에 접근하기 위한 설정은 application.yml 에 이미 작성해놓은 상태였다.
원인
https://charliezip.tistory.com/21
해당 블로그를 참고해보니 @DataJpaTest 어노테이션에 원인이 있었다.
Ctrl + 클릭을 통해 구현 부분으로 가본다면 많은 어노테이션이 있는 것을 알 수 있다. 여기서 에러를 일으키는 어노테이션은 @AutoConfigureTestDatabase이다.
이 어노테이션은 이름 그대로 testDatabase 즉 내장된 데이터베이스를 연결하는 것이다. 나는 외부의 MySQL을 연결하려고 했기 때문에 에러가 났던 것이다.
DataJpaTest에서 AutoConfigureTestDatabase가 나오고 EmbeddedDatabaseConnection의 구현 부분으로 더 들어가면 오른쪽과 같은 그림의 코드가 나온다.
해당 코드를 간략히 얘기하자면 H2, DERBY, HSQLDB 외에는 NONE으로 설정한다는 것이다.
해결
@DataJpaTest을
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
이 어노테이션의 의미는 내장 데이터베이스를 찾지 않고 기존 설정한 데이터베이스를 찾는다는 의미이다.
앞으로 어노테이션도 주의 깊게 봐야 할 거 같다.
'프로그래밍 > 오류보고' 카테고리의 다른 글
[Querydsl] Unable to load class 'com.mysema.codegen.model.Type' 에러 (0) | 2022.09.27 |
---|---|
[JUnit] @BeforeAll 사용시 에러 (0) | 2022.06.30 |
[Spring]Intellij에서 스프링 devtools이 작동하지 않는다면 (0) | 2022.06.14 |