2013-10-30 34 views
2

我正在使用Play Framework 2.1.x,并希望有两个测试配置一个用于小型测试,另一个用于大型测试。大型测试需要定制javaOptions值。我有以下配置,但似乎javaOptions设置没有被拿起。javaOptions自定义测试配置与播放/ SBT

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

它的目的是杀死所有以前的测试设置:=?要追加设置,请使用testOptions ++ = Seq(Tests.Filter(largeTests))。 – Schleichardt

+0

不是故意的,我可以改变它。它是否与问题有关? – thesamet

+0

我不这么认为,我只是想警告你,防止未来的SBT代码出现不好的意外。 – Schleichardt

回答

0
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一个分支。

+1

我把这两个都添加到mySettings和在上面标记为问题的行 - 不起作用:( – thesamet

+0

也许编辑后的代码适用于你 – Schleichardt

+0

仍然没有:/ – thesamet