2013-03-14 100 views
11

我有一個玩!項目與單元測試,我想在我的分期環境使用SBT運行測試。在升級到Play 2.1之前,當我使用Play 2.0.4和sbt 0.11.3時,我可以做$ sbt -Dconfig.file=conf/staging.conf test。無論我爲-Dconfig.file指定什麼,現在sbt test似乎都使用默認的application.conf。如何使用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」' [link](http://stackoverflow.com/questions/7121889/how-can-i-pass -jvm-options-to-sbt-to-use-when-running-the-app-or-test-cases) – fpearsall 2013-03-15 19:29:33

回答

18

測試使用分叉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 2015-10-16 03:26:09