如何通过sbt使用flatspec仅运行scala中没有特定标记的测试?
作为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
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