2013-10-26 4 views
24

스프링 부트를 사용하여 스프링 웹 프로젝트를 만들었습니다. 테스트 관련 연습을 알고 싶습니다. 나는 내장 된 데이터베이스에 초기 schema.sql이있는 junits에 대해 hsql 또는 h2를 요구합니다. 주 응용 프로그램에서 데이터베이스는 mysql 또는 oracle이라고 말할 수 있습니다.메모리 db를 사용하는 스프링 부트 테스트

비 스프링 부트 프로젝트에서 우리는 일반적으로 웹 응용 프로그램에서 참조하는 별도의 applicationcontext.xml 파일을 가지고 테스트를 위해 applicationContext- text.xml

이제, 모든 것이 자동으로 생성되고 Spring Boot가 실행되므로 Spring 부팅시. Junits를위한 임베디드 inmemory db와 어플리케이션을위한 MySQL 같은 외부 DB를 어떻게 설치해야하는지 알고 싶습니다.

제가 생각할 수있는 한 가지 해결책은 프로필을 사용하는 것입니다. 2 개의 등록 정보 파일 application.properties 및 application-test.properties가 있습니다. 내 junits에 대한 테스트 프로필을 사용하십시오.

내가 취해야 할 접근법에 대한 권장 사항.

답변

34

프로필은 실제로 권장되는 방법입니다. 내가 무엇을 할 것인가는 아마도 메모리 내 구현을 "기본"프로파일로 만드는 것입니다 (실제 데이터를 전혀 변경하지 않는 것이므로 무해한 것입니다. 따라서 실수로 실제 데이터를 실수로 실행하는 경우 기본값으로 설정하는 것이 좋습니다).). 개인적으로, 모든 외부 구성을 하나의 application.yml 파일에 넣는 것을 선호하지만, 이는 당신에게 달려 있습니다. 외부 구성에서 유효한 드라이버 클래스와 URL을 제공해야합니다.

spring: 
    datasource: 
    driverClassName: org.h2.Driver 
    url: jdbc:h2:mem:test;MODE=PostgreSQL 
    schema: classpath:/schema.sql 

--- 

spring: 
    profiles: local 
    datasource: 
    url: jdbc:postgresql://localhost/test 
    username: root 
    password: changeme 
    driverClassName: org.postgresql.Driver 
    schema: 

(H2는 포스트 그레스 호환성 모드를 가지고 있습니다, 그래서 생산에 포스트 그레스에 대한 보완으로 정말 좋은 것입니다.)

관련 문제