我正在使用Play Framework 2.1.x,并希望有两个测试配置一个用于小测试,另一个用于大型测试。大型测试需要具有自定义javaOptions值。我有以下配置,但似乎javaOptions设置没有被提取。
import sbt._
import Keys._
import play.Project._
object ApplicationBuild extends Build {
val mySettings = Seq(...)
val smallTestSettings = Defaults.testSettings ++ Seq(
testOptions := Seq(Tests.Filter(smallTests))
)
val largeTestSettings = Defaults.testSettings ++ Seq(
testOptions := Seq(Tests.Filter(largeTests)),
javaOptions ++= Seq("-Dmysetting=1") // <--- PROBLEM HERE
)
lazy val SmallTest = config("smalltest") extend(Test)
lazy val LargeTest = config("largetest") extend(Test)
val main = play.Project(appName, appVersion, appDependencies)
.configs(SmallTest)
.configs(LargeTest)
.settings(mySettings: _*)
.settings(inConfig(SmallTest)(smallTestSettings): _*)
.settings(inConfig(LargeTest)(largeTestSettings): _*)
}
有趣的是,如果我将该行更改为:
javaOptions in Test ++= Seq("-Dmysetting=1")
然后它会被大小测试所吸引。关于如何仅为大型测试配置设置此自定义javaOptions的任何想法?
答案 0 :(得分:1)
val largeTestSettings = Defaults.testSettings ++ Seq(
testOptions := Seq(Tests.Filter(largeTests)),
testOptions in LargeTest += Tests.Argument("-Dmysetting=1")
)
我得到specs2测试只是为了读取属性,如果它们是用JUnitRunner注释的:
import org.junit.runner.RunWith
import org.specs2.mutable.Specification
import org.specs2.runner.JUnitRunner
@RunWith(classOf[JUnitRunner])
class LargeScalaTest extends Specification {
"mysetting should be 1" in {
System.getProperty("mysetting") must beEqualTo("1")
}
}
我的测试项目位于GitHub的分支。