2013-10-26 59 views
24

我已經使用Spring Boot創建了一個Spring Web項目。 想了解圍繞測試的做法。我需要一個內存嵌入式數據庫,例如hsql或h2用於初始schema.sql的junit。 而在主應用程序上,數據庫可以說是mysql或oracle在內存中使用Spring Boot測試db

在非Spring Boot項目中,我們通常會有一個單獨的applicationcontext.xml被web應用程序引用並用於測試,我們將使用applicationContext- text.xml

現在,在Spring引導中,所有內容都是自動創建的,並且Spring Boot也是自定義的。想知道如何設置具有Junits的嵌入式內存數據庫和應用程序的外部數據庫(如MySQL)。

我能想到的一個解決方案是使用配置文件。有2個屬性文件application.properties和application-test.properties。併爲我的聯合使用測試配置文件。

對我應採取的方法的任何建議。

回答

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擁有Postgres的兼容模式,所以這是非常好的一個補充,在生產的Postgres。)

相關問題