如何通过sbt使用flatspec仅运行scala中没有特定标记的测试?

如何通过sbt使用flatspec仅运行scala中没有特定标记的测试?,scala,unit-testing,sbt,scalatest,Scala,Unit Testing,Sbt,Scalatest,作为scala初学者,我想标记集成测试,以便将它们排除在某些场景中运行(因为它们可能非常慢,并且可能由于外部更改/问题而中断) 我通过以下方式创建了标签integration: import org.scalatest.{FlatSpec, Matchers, Tag} object integration extends Tag("com.dreamlines.tags.integration") 在我的测试中,我标记了一个测试,如下所示: class SchemaValidation ex

作为scala初学者,我想标记集成测试,以便将它们排除在某些场景中运行(因为它们可能非常慢,并且可能由于外部更改/问题而中断)

我通过以下方式创建了标签
integration

import org.scalatest.{FlatSpec, Matchers, Tag}
object integration extends Tag("com.dreamlines.tags.integration")
在我的测试中,我标记了一个测试,如下所示:

class SchemaValidation extends FlatSpec with Matchers {
  it should "return valid json" taggedAs (integration) in {
    ...
    assertSchema(response, endpointSchema)
  }
}
然而,在阅读上,我感到非常困惑,因为我突然读到我应该使用
org.scalatest.tools.Runner

scala [-cp scalatest-<version>.jar:...] org.scalatest.tools.Runner [arguments]
我不知道这里的scala测试运行程序指的是什么,也不知道当我运行
sbt测试时会发生什么。我真的迷路了

我希望执行的测试与此不完全相同:

sbt test --ignore-tag integration
根据以下要求,以下各项应适用于您:

testOnly -- -l integration
如果ScalaTest使用完全限定的标记id:

testOnly -- -l com.dreamlines.tags.integration
如果您想在默认情况下执行此操作,可以在
build.sbt
文件中调整
testOptions

编辑:


你可以考虑一下。与其标记它们,不如将它们放在
src/it/{scala | resources}
文件夹中。

如果从命令行运行,我必须引用命令:
sbt“testOnly--l integration”
testOnly -- -l com.dreamlines.tags.integration