2016-06-21 97 views
0

我与集成测试的Scala的项目,下面的文件夹结构斯卡拉集成测试不采摘配置属性

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

我想投入application.regression.devl.conf文件覆盖的特性之一,但同时运行集成测试它仍然是拉动顶级财产。

例如,在一些项目在有

someKey=someValue 

我把

somekey=otherValue 

application.regression.devl.conf。但是,集成测试仍在采摘someValue

我build.sbt看起来像

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

配置负载为

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) 

}

更新:ID我做Ctrl + Shift + F10在IntelliJ它确实拿起otherValue。所以它有问题,只能用sbt it:test

+0

你是如何加载配置?默认情况下它会查找'application.conf'和'reference.conf',而不是'application.regression.devl.conf'。 –

+0

更新的问题,配置加载代码 –

回答

1

尝试设置javaOptions在SBT这样的:

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

有了这个SBT将设置config.resource参数设置为“application.regression.devl.conf”如果没有传递明确。

+0

我如何能参数化在sbt.build结束部分? “application.regression。$ env.conf –