2017-04-26 5 views
1

스프링 부트에서 테스트를 실행하면 schema-${platform}.sqldata-${platform}.sql이 실행 중입니다.

제 시나리오에서는 schema.sql을 테스트에서 제거하고 데이터 소스 속성을 datasource.jpa.hibernate.ddl-auto=update으로 설정해야합니다. 'Schema 2'을 테스트 폴더에서 제거하면 'Schema 1'이 계속 실행됩니다.

나는 다음과 같은 디렉토리 구조가 있습니다

├───src 
│ ├───main 
│ │ └───resources 
│ │  ├───locale 
│ │  └───static 
│ │  └data-mysql.sql 
│ │  └schema-mysql.sql //Schema 1 
│ └───test 
│  └───resources 
│   └data-mysql.sql 
│   └schema-mysql.sql //Schema 2 

->스키마 2이 같은 SQL 명령을 가지고 1 및 스키마 모두를.

테스트 폴더에서 schema-mysql.sql를 제거하고 테스트는 '스키마 1'을 실행하지, 테스트 폴더에 data-mysql.sql을 유지하기 위해 어쨌든 있나요?

+0

관련 질문 : https://stackoverflow.com/questions/35531661/using-env-variable -in-spring-boots-application-properties –

답변

0

하나 개의 솔루션은 사용자에게 테스트

당신은 JVM 명령 행에서 시스템 속성을 설정합니다 테스트 그래서

1. 에 대해 서로 다른 프로필입니다. 같은 -Dspring.profiles.active = testing-Dspring.profiles.active = 당신은 다음 두 번째 application.properties을 만들 것

2. 비가 또는 -Dspring.profiles.active =로 임의 뭔가 CI 파일의 프로파일을 일치

예를 들어

그 특성에

는 다음 사용이 데이터 파일의 이름과 위치를 지정할 수 파일 application-testing.properties

spring.datasource.schema =

봄 부팅 프로파일 문서
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html


https://www.mkyong.com/spring-boot/spring-boot-profiles-example/