2016-06-21 11 views
0

ich ein Scala-Projekt mit Integrationstest habe mit folgenden OrdnerstrukturScala Integrationstest nicht Kommissionierung Konfigurationseigenschaften

My Project 
    - app 
    - it 
    - com.anjib.my.pkg 
    - resources 
     - application.regression.devl.conf 

Ich mag eine der Eigenschaften zu überschreiben, indem in application.regression.devl.conf Datei setzen, aber beim Laufen Integration testet seine noch ziehen Top-Level-Eigenschaft.

Zum Beispiel einige, wo in Projekt gibt es

someKey=someValue 

ich

setzen
somekey=otherValue 

in application.regression.devl.conf. Aber Integrationstests noch Kommissionierung someValue

Mein build.sbt sieht aus wie

lazy val `my-project` = (project in file(".")) 
    .... 
    .configs(IntegrationTest) 
    .settings(Defaults.itSettings : _*) 
    .... 

)

Config Laden als

def apply(): Config = { 
    val environment = determineEnvironment 
    val defaultConfig = ConfigFactory.load() 
    val envConfig: Config = ConfigFactory.load(s"application.$environment.conf") 
    val regressionSuiteConfig = ConfigFactory.load(s"application.regression.$environment.conf") 
    regressionSuiteConfig.withFallback(envConfig).withFallback(defaultConfig) 

}

Update: ID I Ctrl + Shift + F10 tun In IntelliJ hat esaufgenommen. So hat es Problem nur mit sbt it:test

+0

Wie laden Sie die Konfiguration? Standardmäßig sucht es nach "application.conf" und "reference.conf", nicht nach "application.regression.devl.conf". –

+0

Aktualisierte Frage mit dem Ladecode der Konfiguration –

Antwort

1

Versuchen Sie, die javaOptions in sbt wie folgt festgelegt:

javaOptions in IntegrationTest += "-Dconfig.resource=" + System.getProperty("config.resource", "application.regression.devl.conf") 

Mit diesem sbt den config.resource Parameter wird auf „application.regression.devl.conf“, wenn nichts passiert ist ausdrücklich.

+0

Wie kann ich den Endteil in sbt.build parametrisieren? "application.regression. $ env.conf –

Verwandte Themen