Как указать конфигурационный файл с sbt 0.12.2 для теста sbt?
У меня есть игра! проект с модульными тестами, и я пытаюсь запустить тесты в моей промежуточной среде с помощью sbt. Прежде чем я перешел на Play 2.1, когда я использовал Play 2.0.4 и sbt 0.11.3, я мог бы сделать $ sbt -Dconfig.file=conf/staging.conf test
. Теперь sbt test
, похоже, использует файл application.conf по умолчанию, независимо от того, что я указываю для -Dconfig.file.
sbt start -Dconfig.file=conf/staging.conf
все еще работает нормально. Является ли это поведение ошибкой с sbt 0.12.2 или я должен указывать конфигурационный файл для запуска тестов по-другому?
Ответы
Ответ 1
Тест использует forked jvm.
Используйте javaOptions sbt для передачи jvm-параметров, например.
javaOptions ++= Seq("-Dconfig.file=conf/staging.conf")
или
javaOptions ++= collection.JavaConversions.propertiesAsScalaMap(System.getProperties).map{ case (key,value) => "-D" + key + "=" +value }.toSeq
Ответ 2
Аналогичный подход состоит в том, чтобы просто передать файл конфигурации, который будет использоваться, при запуске теста sbt
Сначала в файле 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
)
Затем в командной строке для запуска теста с integ.conf
sbt -Dtest.config=integ test
использовать стандартный application.conf
sbt test