오류 내용은 다음과 같았다.
Caused by: java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required.
물론 더 긴 내용이 있겠지만 대충 내용을 파악하자면 DataSource가 제대로 생성되지 않아서 이 후 모든 주입되는 빈에 영향을 주고 있었다.
상당히 고통을 받으며 해결하게 되었으므로 오늘은 해결 과정에 대해서 포스팅을 해보고자 한다.
-
jdbc-url 설정?? 많은 내용을 구글에서 검색하며 찾아본 결과 다음의 포스팅을 발견하였다. 해당 내용은 이미 설정이 되어 있음을 확인하였고 문제가 되는 부분이 아니라고 인식하게 되었다
-
다중으로 datasource를 설정하는 부분이 잘못된 게 아닌가? 의심을 하게 되었음. 새로운 프로젝트로 새롭게 만들어서 datasource 다중으로 설정해서 동작시켜보았으나 정상 작동함. 실험 완료된 코드를 서비스에 적용하였으나 동일한 오류 발생하였다.
-
테스트케이스에서만 오류가 발생하는 것으로 보아 application.yaml과 database.yaml로 나뉜 구조가 문제인 지 확인해보았음. 결과적으로 database.yaml 파일을 테스트코드에서 제대로 읽어오지 못해서 발생하는 문제임을 파악
이를 해결하기 위한 검색을 진행하였음. application.yaml 파일 나누기, database.yaml 등등 검색을 진행하였으나 application.yaml 을 나누는 방법에 대해서만 나와있고 customeName.yaml에 대한 답변은 찾을 수 없었습니다.
이 과정에서 application.yaml 사용에 대한 부분을 학습할 수 있었는데 괜찮은 내용 공유합니다.
참고 자료 :
그러다 Testcode에서만 제대로 bean을 가져오지 못하는 상황으로 testcode에서만 yaml파일을 따로 읽으면 해결이 될 것으로 판단하고 관련된 내용을 검색하였습니다.
결론적으로 해결방법에 대한 자료는 다음의 블로그에서 찾았습니다.
요약하자면 테스트케이스에서의 설정을 다음과 같이 추가해주면 됩니다. (properties 부분 확인 요망)
@AutoConfigureMockMvc
@SpringBootTest(
webEnvironment = SpringBootTest.WebEnvironment.MOCK,
properties = "spring.config.location ="+
"classpath:/application.yaml"+
",classpath:/database.yaml"
)
public class ControllerTest {
...
}
다중데이터소스를 설정하였는데, 갑자기 테스트케이스가 동작하지 않으시는 분.
application.yaml을 각 역할에 알맞게 나누다가 테스트케이스에서 오류가 발생하시는 분께 도움이 되길 바랍니다.
'JAVA > Spring Framework' 카테고리의 다른 글
[Spring] RequestParam값 객체로 매핑하기, Custom Annotation 만들기 (0) | 2020.01.08 |
---|---|
[Spring] application.yaml 설정하기 (다중 설정, custom.yaml 생성) (0) | 2020.01.07 |
[Spring] 간단한 TestCase 만들기 (0) | 2020.01.07 |
[Spring] Controller와 Service 생성하기 (0) | 2020.01.07 |
[Spring] 다중 데이터소스 설정(Multiple Datasource JPA, Mybatis) (0) | 2020.01.07 |