최근 Spring 프레임워크를 사용하여 테스트 코드를 작성 중에 다음과 같은 에러 메시지를 마주하게 되었습니다.
java.lang.IllegalStateException: ApplicationContext failure threshold (1) exceeded: skipping repeated attempt to load context for ...
처음에는 ApplicationContext가 중복으로 로딩되어 발생하는 에러라 생각하였고 구글링을 하였고 위 에러가 근본적인 에러가 아닌것을 확인하였습니다.
로그를 짚어보며 가다보니 아래와 같은 에러 문구를 발견하였습니다.
Error creating bean with name 'dataSourceScriptDatabaseInitializer'
원인은 yml 파일을 로컬과 테스트 환경으로 나누어 사용하고 있고, 미리 데이터를 data.sql
에 넣어서 사용하고 있었는데, 테스트 코드를 실행할 때 data.sql
을 찾지 못해서 발생한 문제였습니다.
해결책으로는 테스트 코드에서는 미리 데이터를 올릴 필요가 없으므로, 아래와 같이 설정하여 data.sql
을 사용하지 않도록 변경하였습니다.
spring:
sql:
init:
mode: never
위와 같이 설정한 후에는 에러 없이 테스트 코드가 정상적으로 동작하는 것을 확인할 수 있었습니다.