4

私は Play Framework 2.1.x を使用しており、小規模なテスト用と大規模なテスト用の 2 つのテスト構成が必要です。大規模なテストには、カスタムの 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 を大規模なテスト構成に対してのみ設定する方法についてのアイデアはありますか?

4

1 に答える 1

1
  val largeTestSettings = Defaults.testSettings ++ Seq(
    testOptions := Seq(Tests.Filter(largeTests)),
    testOptions in LargeTest += Tests.Argument("-Dmysetting=1")
  )

JUnitRunner で注釈が付けられている場合、プロパティを読み取るためだけに specs2 テストを取得しました。

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のブランチにあります。

于 2013-10-30T07:44:09.323 に答える