2013-03-14 11 views
11

Ho un gioco! progetto con unit test e sto cercando di eseguire test sul mio ambiente di staging usando sbt. Prima di passare a Play 2.1, quando usavo Play 2.0.4 e sbt 0.11.3, potevo fare $ sbt -Dconfig.file=conf/staging.conf test. Ora sbt test sembra utilizzare il file application.conf predefinito, indipendentemente da cosa io specifichi per -Dconfig.file.Come si specifica un file di configurazione con sbt 0.12.2 per il test sbt?

sbt start -Dconfig.file=conf/staging.conf funziona ancora correttamente. Questo comportamento è un bug con sbt 0.12.2 o dovrei specificare un file di configurazione per eseguire test in un modo diverso?

+0

Se si desidera aggiungere opzioni Java solo 'test' sbt e non altre configurazioni che puoi fare 'javaOptions in Test + =" -Dconfig.file = conf/test.conf "' [link] (http://stackoverflow.com/questions/7121889/how-can-i-pass -jvm-options-to-sbt-to-use-when-running-the-app-or-test-cases) – fpearsall

risposta

18

test sta utilizzando jvm a forcella. Usa l'impostazione di javaOptions sbt per passare ad esso le opzioni jvm, ad es.

javaOptions ++= Seq("-Dconfig.file=conf/staging.conf")
o

javaOptions ++= collection.JavaConversions.propertiesAsScalaMap(System.getProperties).map{ case (key,value) => "-D" + key + "=" +value }.toSeq

10

approccio simile è quello di passare solo il file di configurazione da utilizzare, mentre innescando il test sbt

In primo luogo, nel file Build.scala

val testOptions = "-Dconfig.file=conf/" + Option(System.getProperty("test.config")).getOrElse("application") + ".conf" 

val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA).settings(
    javaOptions in Test += testOptions 
) 

Quindi, in t egli riga di comando per eseguire il test con integ.conf

sbt -Dtest.config=integ test 

usare quello di default application.conf

sbt test 
+0

grazie, questo ha risolto il mio problema. – ttt

Problemi correlati