https://github.com/code-chobo/dev-api 프로젝트를 진행하며 쓰는 회고입니다.
@DataJpaTest
application-test.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/codechobo_test?serverTimezone=Asia/Seoul&useSSL=false
username: codechobo_user
password: password
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
open-in-view: false
hibernate:
ddl-auto: create
database-platform: org.hibernate.dialect.MySQL57Dialect
상황 :
@DataJpaTest
테스트를 실행했을 때Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "ACCOUNT" not found; SQL statement:...
같은 에러가 뜬다.
문제점 :
분명히 application-test.yml
에 datasource
를 mysql
로 잡아주었는데도 임베디드디비인 h2
에서 에러가 난다.
왜 이런 건지 알아보니, @DataJpaTest
는 데이터 소스가 저렇게 되있어도 임베디드 디비를 쓴다!
해결 :
따라서 @DataJpaTest
를 사용하는 테스트 클래스 위에 @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
를 붙여줘서 임베디드 디비로 대체하지 않고, 설정 파일에 적시된 데이터소스를 사용하게끔 했다.
'회고 > 코드초보 플랫폼 독립 프로젝트' 카테고리의 다른 글
[회고] Security가 관련되어 있는 테스트 시 WithSecurityContextFactory 활용. (0) | 2020.08.08 |
---|---|
[회고] MySQL5Dialect와 MySQL 스토리지 엔진 (0) | 2020.08.04 |