Play Framework configurazione ambiente di test

Play Framework a partire dalla versione 2.3.x effettua il caricamento delle configurazioni presenti nel file conf/application.conf che al momento però non consente configurazioni diverse a seconda dell’ambiente (Sviluppo, Produzione, Test).
Questa configurazione è particolarmente scomoda se si vogliono effettuare i test direttamente da Activator  in quanto questi test vengono eseguiti sullo stesso database utilizzato in ambiente di sviluppo, mentre vorremmo che fosse possibile testare su database diversi a seconda dell’ambiente.

Fortunatamente Typesafe Config e SBT  forniscono tutto quello che ci serve per configurare il nostro ambiente in modo pulito.

La soluzione che voglio proporvi è la seguente

Per prima cosa dobbiamo creare un file di configurazione, ad esempio conf/application.test.conf, per la modalità di test. Questo file erediterà tutte le configurazioni presenti nel file conf/application.conf tramite l’istruzione include. Inoltre sovrascriverà mediante override i valori di configurazione che sono diversi e specifici per l’ambiente di test.

I database che possiamo utilizzare nell’ambiente di test sono postgresql con la seguente configurazione:

include "application.conf"

# Overrite db.default settings
db.default.driver="org.postgresql.Driver"
db.default.url="jdbc:postgresql://localhost/project_name_test"
db.default.user="username"
db.default.password="password"

In alternativa è possibile utilizzare un database H2 con la seguente configurazione:


include "application.conf"

# Overrite db.default settings
db.default.driver = org.h2.Driver
db.default.url = "jdbc:h2:mem:play"
db.default.username = "username"
db.default.password = "password"

Infine è necessario configurare SBT in modo che istruisca Play per caricare il file conf/application.test.conf quando è in esecuzione la modalità di test aggiungendo la seguente riga a build.st:


// Test Database settings
javaOptions in Test += "-Dconfig.file=conf/application.test.conf"

// Test libraries Database
libraryDependencies += "com.h2database" % "h2" % "1.4.197"

// Testing libraries for dealing with CompletionStage...
libraryDependencies += "org.assertj" % "assertj-core" % "3.11.1" % Test
libraryDependencies += "org.awaitility" % "awaitility" % "3.1.3" % Test
// Make verbose tests
testOptions in Test := Seq(Tests.Argument(TestFrameworks.JUnit, "-a", "-v"))

Ora non vi resta che effettuare un test lanciando il comando sbt test
Tothebit

About Tothebit

How to whitelist website on AdBlocker?

How to whitelist website on AdBlocker?

  1. 1 Click on the AdBlock Plus icon on the top right corner of your browser
  2. 2 Click on "Enabled on this site" from the AdBlock Plus option
  3. 3 Refresh the page and start browsing the site