14

我有戏!带有单元测试的项目,我正在尝试使用 sbt 在我的暂存环境上运行测试。在我升级到 Play 2.1 之前,当我使用 Play 2.0.4 和 sbt 0.11.3 时,我可以做到$ sbt -Dconfig.file=conf/staging.conf test. sbt test无论我为 -Dconfig.file 指定什么,现在似乎都使用默认的 application.conf。

sbt start -Dconfig.file=conf/staging.conf仍然可以正常工作。这种行为是 sbt 0.12.2 的错误还是我应该指定一个配置文件来以不同的方式运行测试?

4

2 回答 2

20

测试正在使用分叉的 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

于 2013-03-14T23:24:01.650 回答
11

类似的方法是只通过配置文件来使用,同时触发 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 
于 2013-08-09T06:01:51.827 回答