해결된 질문
작성
·
29
0
몇 챕터/몇 강을 수강 중이신가요?
섹션3[2주차]설득력을 높이는 수치화 기술
11강 2-4 프로젝트 기본 설정하기 & 로컬 모니터링 인프라 설정
어느 부분에서 막히셨나요? 14:08분 build 시 test 시 런칭 시점에 테스트를 모두 통과하도록 변경했다고 하는데, 실제 build시에 테스트 task 수행 시 DB에 연결할 수 없는 오류가 발생합니다
docker compose up 후 bootRun시 localhost:8080/api/chapter2/boards시 응답 값은 제대로 나옵니다
문제 해결을 위해 어떤 시도를 해보셨나요?
에러가 발생했다면 어떤 에러인가요?
EventJoinWithExternalApiUpdateFacadeTest > 외부 API 호출과 DB 업데이트 불일치 테스트 FAILED
java.lang.AssertionError at EventJoinWithExternalApiUpdateFacadeTest.java:103
SimpleEventListenerTest > 현재 코드 구조에서 @TransactionalEventListener는 작동하지 않는다 FAILED
java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:143
Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1770
Caused by: jakarta.persistence.PersistenceException at AbstractEntityManagerFactoryBean.java:421
Caused by: org.hibernate.exception.JDBCConnectionException at SQLExceptionTypeDelegate.java:49
Caused by: java.sql.SQLNonTransientConnectionException at SQLError.java:111
Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1770
Caused by: jakarta.persistence.PersistenceException at AbstractEntityManagerFactoryBean.java:421
Caused by: org.hibernate.exception.JDBCConnectionException at SQLExceptionTypeDelegate.java:49
Caused by: java.sql.SQLNonTransientConnectionException at SQLError.java:111
SimpleEventListenerTest > @TransactionalEventListener는 활성 트랜잭션이 필요하다 FAILED
java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:143
Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1770
Caused by: jakarta.persistence.PersistenceException at AbstractEntityManagerFactoryBean.java:421
Caused by: org.hibernate.exception.JDBCConnectionException at SQLExceptionTypeDelegate.java:49
Caused by: java.sql.SQLNonTransientConnectionException at SQLError.java:111
Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1770
Caused by: jakarta.persistence.PersistenceException at AbstractEntityManagerFactoryBean.java:421
Caused by: org.hibernate.exception.JDBCConnectionException at SQLExceptionTypeDelegate.java:49
Caused by: java.sql.SQLNonTransientConnectionException at SQLError.java:111
SimpleEventListenerTest > @EventListener는 트랜잭션이 없어도 정상 동작한다 FAILED
java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:143
Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1770
Caused by: jakarta.persistence.PersistenceException at AbstractEntityManagerFactoryBean.java:421
Caused by: org.hibernate.exception.JDBCConnectionException at SQLExceptionTypeDelegate.java:49
Caused by: java.sql.SQLNonTransientConnectionException at SQLError.java:111
Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1770
Caused by: jakarta.persistence.PersistenceException at AbstractEntityManagerFactoryBean.java:421
Caused by: org.hibernate.exception.JDBCConnectionException at SQLExceptionTypeDelegate.java:49
Caused by: java.sql.SQLNonTransientConnectionException at SQLError.java:111
현재 작성하신 코드를 공유해주세요
이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다!
답변 3
0
안녕하세요 rirws966 님!! 아고 해당 부분으로 불편함을 겪게 해서 죄송합니다 ㅠ.ㅠ
이 부분 교재 및 강의 영상 내에서 명시적으로 해결할 수 있도록 해보겠습니다!!
제보해주셔서 감사드립니다 __
0
안녕하세요, 인프런 AI 인턴입니다. rirws966님.
빌드 시 발생하고 있는 테스트 오류는 주로 데이터베이스 연결 문제와 관련된 것으로 보입니다. 오류 메시지에 나타난 JDBCConnectionException
은 데이터베이스에 연결할 수 없음을 나타내며, 이는 테스트 환경에서의 데이터베이스 설정이 제대로 이루어져 있지 않기 때문일 수 있습니다. 여기 몇 가지 확인해야 할 사항과 제안 드리는 해결 방법입니다.
application.yml
또는 application.properties
파일: 테스트 시 사용하는 데이터베이스의 URL, 사용자명, 비밀번호가 올바르게 설정되어 있는지 확인하세요. 특히, 테스트 환경에서 사용되는 프로파일의 설정(application-test.yml
)이 제대로 구성되어 있는지 중요합니다.
환경 변수 확인: Docker와 같은 환경에서 데이터베이스 컨테이너가 올바르게 실행 중인지 확인하셔야 합니다. docker ps
명령어로 데이터베이스 컨테이너가 실행 중인지, 설정된 포트가 응답하고 있는지 확인하세요.
H2 등 임베디드 데이터베이스 사용: 로컬에서 테스트를 수행하는 경우, MySQL 대신 H2와 같은 임베디드 데이터베이스를 사용하여 테스트를 진행하는 것도 하나의 방법입니다. 이는 설정 및 연결 문제를 줄이는 데 도움이 될 수 있습니다.
Docker의 네트워크 설정 확인: Docker Compose 환경을 사용 중이라면, 데이터베이스와 애플리케이션 간의 네트워크 연결이 제대로 설정되어 있는지 확인해 보세요.
@Transactional
사용: 테스트 코드에서 트랜잭션을 사용하는 경우, @Transactional
어노테이션이 올바르게 적용되어 있는지 확인해 주세요. 특히 @TransactionalEventListener
를 사용할 때에는 메서드가 트랜잭션 내에서 실행되는지 확인해야 합니다.위 해결책과 함께 관련 링크를 검토하시고, 궁금한 점이 있으면 추가 질문해 주세요. 이러한 문제들이 해결되기를 바랍니다!
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.