[SpringBoot] org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction 에러 해결

2024. 9. 26. 20:39· 웹 개발 공부 : Back-end/JAVA - Spring
목차
  1. 1. 원인
  2. 2. 해결방법
  3. 2-1. @ActiveProfiles("profile 명")
  4. 2-2. src/test/resources/ 경로에 테스트용 application.yml 파일 추가
반응형

1. 원인

application.yml을 각각 운영과 개발 환경으로 분리했을 경우 JUnit으로 테스트할 때, DB 접속정보가 운영환경으로 인식되었기 때문에, JPA 기능을 사용할 수 없는 경우

 

필자는 DB 접속정보를, 시크릿에다 등록해놓았기 때문에, application.yml에 DB접속 정보를 직접 넣지않고, 환경변수로 세팅해놓았다. 그러다보니, 모든 접속정보가 null로 들어오기 때문에 해당 오류가 발생한 것이다.

 

 

2. 해결방법

2-1. @ActiveProfiles("profile 명")

@ActiveProfiles 어노테이션으로 개발용 application에서 지정한 프로필명을 해당 테스트 클래스에 명시해주면 테스트 시 해당 profile의 application.yml로 인식한다.

# application-dev.yml
spring:
  config:
    activate:
      on-profile: dev

프로필명은 'on-profile' 속성으로 지정해주면 된다.

 

2-2. src/test/resources/ 경로에 테스트용 application.yml 파일 추가

운영, 개발용 application.yml이 있었다면, JUnit 테스트용 application.yml을 하나 더 추가해주면 @ActiveProfiles 어노테이션을 명시하지 않아도 사용가능하다. 여기서, 주의사항은 src/test/resources/application.yml 파일에서는 'on-profile' 설정을 사용하지 않는 것이다. (인텔리제이에서만 된다고 하는데, 다른 툴을 사용하시는 분은 한번 테스트해보길 바란다.)

반응형

'웹 개발 공부 : Back-end > JAVA - Spring' 카테고리의 다른 글

[Spring Boot] java.sql.SQLException: No database selected 에러  (2) 2024.09.12
[Spring Boot] java.lang.NullPointerException: Cannot invoke "org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(java.sql.SQLException, String)" because the return value of "org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelega  (0) 2024.09.12
[SpringBoot - JUnit] org.junit.jupiter.api.extension.ParameterResolutionException: Failed to resolve parameter ~ 에러 해결  (0) 2024.08.28
[Spring] Spring에 대한 개념 정리  (0) 2024.08.19
  1. 1. 원인
  2. 2. 해결방법
  3. 2-1. @ActiveProfiles("profile 명")
  4. 2-2. src/test/resources/ 경로에 테스트용 application.yml 파일 추가
'웹 개발 공부 : Back-end/JAVA - Spring' 카테고리의 다른 글
  • [Spring Boot] java.sql.SQLException: No database selected 에러
  • [Spring Boot] java.lang.NullPointerException: Cannot invoke "org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(java.sql.SQLException, String)" because the return value of "org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelega
  • [SpringBoot - JUnit] org.junit.jupiter.api.extension.ParameterResolutionException: Failed to resolve parameter ~ 에러 해결
  • [Spring] Spring에 대한 개념 정리
Developer KTU
Developer KTU
Developer KTU
KTU 개발 블로그
Developer KTU
전체
오늘
어제
  • 분류 전체보기
    • 웹 개발 공부 : Back-end
      • JAVA
      • JPA
      • JAVA - Spring
      • MySQL
      • Docker
      • Redis
      • JSP
      • DevOps
      • 파이썬 - 장고
      • 운영체제
      • WEB
    • 블록체인
    • 웹 개발 공부 : Front-end
      • React
      • Javascript
      • JQuery
      • Ajax
    • 알고리즘 공부
    • 나의 커리어

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 스프링부트
  • 백엔드개발자
  • 컴퓨터공학
  • 자바
  • Python
  • 알고리즘공부기
  • 알고리즘
  • 백준
  • 알고리즘공부
  • Back-end
  • 웹개발
  • 코딩테스트
  • 백엔드
  • BOJ
  • 자바스크립트
  • Java
  • SpringBoot
  • Algorithm
  • 파이썬
  • JavaScript

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
Developer KTU
[SpringBoot] org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction 에러 해결
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.