2013-03-14 1 views
11

У меня есть игра! проект с модульными тестами, и я пытаюсь запустить тесты в моей промежуточной среде с помощью 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 0.12.2 для теста sbt?

sbt start -Dconfig.file=conf/staging.conf все еще работает хорошо. Является ли это поведение ошибкой с sbt 0.12.2, или я должен указывать конфигурационный файл для запуска тестов другим способом?

+0

Если вы хотите добавить опции Java только 'SBT test' и не другие конфигурации, то вы можете сделать 'javaOptions in Test + =" -Dconfig.file = conf/test.conf "' [ссылка] (http://stackoverflow.com/questions/7121889/how-can-i-pass -jvm-options-to-sbt-to-use-when-running-the-app-or-test-cases) – fpearsall

ответ

18

тест используется 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

10

Подобный подход просто передать конфигурационный файл для использования, в то время как запуск теста 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 
) 

Затем, в t он командной строки для запуска теста с integ.conf

sbt -Dtest.config=integ test 

использовать по умолчанию application.conf

sbt test 
+0

спасибо, это решило мое проблема. – ttt