2015-04-14 10 views
5

Nel mio scala test, ho letto una variabile environmnt tramite sys.props.getOrElse("cassandra.test.host", DEFAULT_CASSANDRA_TEST_HOST).Come passare le variabili di ambiente a un passo di costruzione del test sbt in Jenkins?

I test vengono eseguiti tramite Jenkins.

Ho aggiunto un Build using sbt come fase di creazione.

Guardando a domande simili su così, mi si avvicinò con questa soluzione - cioè impostando il campo azioni per:

'; set javaOptions += "-Dcassandra.test.host=XX.XXX.XXX.XXX"; test'

ma doesnt lavoro. Nessuna variabile viene impostata quando viene eseguito Properties.envOrElse.

The Jenkins output della console contiene:

[...] [util-sessionizer] $ java -jar /usr/local/bin/sbt-launch.jar '; set javaOptions += "-Dcassandra.test.host=XX.XXX.XXX.XXX"; test' [info] Loading project definition from /jenkins/workspace/util-sessionizer/project/project [info] Loading project definition from /jenkins/workspace/util-sessionizer/project [info] Set current project to util-sessionizer (in build file:/jenkins/workspace/util-sessionizer/) [info] Defining *:javaOptions [info] The new value will be used by *:runner, compile:run::runner and 4 others. [info] Run `last` for details. [info] Reapplying settings... [...]

+0

Quale framework di test stai usando? –

+0

Sto usando scalatest – piercarlo

risposta

8

Se non si esegue la foratura di una nuova JVM per eseguire i test, l'impostazione javaOptions non fa nulla. Estratto da SBT sé:

> help javaOptions 
Options passed to a new JVM when forking. 

Questo spiega perché il tuo javaOptions non sono utilizzati quando non sei biforcano i test.

che, fondamentalmente, due soluzioni:

  • entrambi i set fork in Test := true per eseguire i test in JVM biforcute
  • O passare le proprietà del sistema di SBT stessa:

    sbt -Dcassandra.test.host=XX.XXX.XXX.XXX test

0

Si sta impostando una proprietà di sistema con -Dcassandra.test.host=XX.XXX.XXX.XXX", ma poi usando Properties.envOrElse che è per le variabili di ambiente. Vedi Environment Variables.

Prova questo:

sys.props.getOrElse("cassandra.test.host", DEFAULT_CASSANDRA_TEST_HOST) 
+0

Buon punto; cambio di codice come suggerito - ma ancora non funziona ... – piercarlo

1

Sembra che l'aggiunta fork in Test := true risolve il problema - anche se, ad essere onesti, non ho studiato il corrlation extact tra i due eventi (ad esempio l'aggiunta di fork in Test := true e avere la proprietà di sistema . passò ai miei test

Quindi l'argomento corretta da passare a SBT è:

'; set fork in Test := true; set javaOptions += "-Dcassandra.test.host=XX.XXX.XXX.XXX"; test'

Problemi correlati