2013-10-26 19 views
24

Ho creato un progetto Web Spring utilizzando Spring Boot. Vorrebbe capire la pratica intorno al test. Richiedo un database incorporato nella memoria dire hsql o h2 per le mie giunzioni con schema.sql iniziale. E sul database potrebbe essere mysql o oracleTest di avvio a molla con memoria db

In un progetto di avvio non Spring, avremmo normalmente uno applicationcontext.xml separato che viene indirizzato dall'app Web e per test utilizzeremo applicationContext- text.xml

Ora, in avvio di primavera, poiché tutto viene creato automaticamente e viene suggerito anche Spring Boot. Mi piacerebbe sapere come configurare un db embedded inmemory per Junits e un db esterno come MySQL per l'applicazione.

Una soluzione a cui riesco a pensare è l'utilizzo dei profili. con 2 file di proprietà application.properties e application-test.properties. e utilizzare il profilo di test per le mie giunzioni.

Qualsiasi raccomandazione sull'approccio che dovrei prendere.

risposta

34

Un profilo è, infatti, l'approccio consigliato. Quello che farei è probabilmente rendere l'implementazione in-memory il profilo "predefinito" (è innocuo, nel senso che non si cambiano mai dati reali, quindi è meglio impostarlo come predefinito nel caso in cui qualcuno lo esegua accidentalmente su un vero database). Personalmente, preferisco mettere tutta la configurazione esterna in un singolo file application.yml, ma dipende solo da te. Nella configurazione esterna è necessario fornire una classe di driver e un URL validi, ad es.

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: 

(Si noti che H2 ha una modalità di compatibilità postgres, quindi è davvero bello come un complemento alla postgres in produzione.)

Problemi correlati