specs2:标记规范/个人测试并使用 sbt 将其排除在运行之外

0fn*_*fnt 2 sbt specs2

在运行我的测试套件时,我需要跳过规范和单独的测试。这是一个这样的测试示例:

package models

import org.specs2.mutable._
import org.specs2.runner._

class SlowTaggedSpecification extends Specification{
  "SLOW_SPEC" should {
    "BAD!! Not Skipped" in {
      "axbcd" must find( "bc".r )
    }
  } section( "SLOW_SPEC" )
}

class SlowFastTaggedSpecification extends Specification{
  "SLOW_FAST_SPEC" should {
    "run fast test" in {
      "axbcd" must find( "bc".r )
    } section( "FAST_TEST" )

    "SLOW_TEST should be skipped (BAD!! NOT Skipped)" in {
      "axbcd" must find( "bc".r )
    } section( "SLOW_TEST" )
  } section( "SLOW_FAST_SPEC" )
}
Run Code Online (Sandbox Code Playgroud)

我需要跳过SLOW_SPEC(整个规范)和SLOW_TEST(仅限个人测试)。我的 build.sbt 是:

scalaVersion := "2.11.1"

libraryDependencies += "org.specs2" %% "specs2" % "2.3.12" % "test"
Run Code Online (Sandbox Code Playgroud)

当我运行以下命令行时:

sbt '~testOnly models.* -- -l SLOW_SPEC'
sbt '~testOnly models.* -- -l SLOW_TEST'
Run Code Online (Sandbox Code Playgroud)

没有任何测试被跳过。我可以知道如何使用标签排除规范和单个测试吗?另外,如果我不使用testOnly, 但是sbt 语法是test什么?

sbt '~test -- -l SLOW_SPEC'
Run Code Online (Sandbox Code Playgroud)

导致sbt抱怨。我的 sbt 版本是 0.13.5

任何指针将不胜感激。

Eri*_*ric 5

排除标签的命令行参数是

sbt> ~testOnly models.* -- exclude SLOW_SPEC
Run Code Online (Sandbox Code Playgroud)

如果要在使用test需要Test.Argumentsbuild.sbt文件中使用的命令时排除标签:

testOptions in Test += Tests.Argument(TestFrameworks.Specs2, "exclude", "SLOW_SPEC")
Run Code Online (Sandbox Code Playgroud)

如果要专门运行 SLOW_SPEC 测试,请使用以下命令:

sbt 'set testOptions in Test := Seq()' '~testOnly models.SlowTaggedSpecification' 
Run Code Online (Sandbox Code Playgroud)