使用ScalaTest时从SBT中排除特定标记的测试

Dan*_*don 7 automated-tests scala sbt scalatest

我在尝试运行所有测试时遇到了很多挫折sbt- 同时排除了特定的标签.这是我想要运行的:

testOnly * -- -l "com.my.project.path.tags.ValidationTest"
Run Code Online (Sandbox Code Playgroud)

我已经尝试了这个命令的许多变体,包括用*类的路径替换,或者像这样替换包的路径:

testOnly "com.my.project.path.somePackage" -- -l "com.my.project.path.tags.ValidationTest"
Run Code Online (Sandbox Code Playgroud)

而且我已尝试在包装周围使用和不使用引号.

我只是读到testOnly了新版本中使用的sbt而不是test-only.我尝试过这种语法(以及许多变体),似乎没有任何效果.我的测试设置如下:

"some method" should "fail when doing something" taggedAs ValidationTest in { ... }
Run Code Online (Sandbox Code Playgroud)

我已经object ValidationTest extends Tag("com.my.project.path.tags.ValidationTest")定义了TestTag.scala.

当使用it关键字而不是使用关键字定义方法时,我也尝试了这一点"some method" should "fail..."

使用ScalaTest的Sbt在" 包含和排除带有标记的测试 " 下显示以下内容

> test-only org.acme.* -- -n CheckinTests
> test-only org.acme.* -- -n FunctionalTests -l org.scalatest.tags.Slow
> test-only org.acme.* -- -n "CheckinTests FunctionalTests" -l "org.scalatest.tags.Slow org.scalatest.tags.Network"
Run Code Online (Sandbox Code Playgroud)

小智 0

只是一些猜测:

  • 所有这些语法仅适用于 sbt 控制台,不适用于命令行;
  • 包名称应不带引号,并应以 asterix 结尾,标签应带引号(例如testOnly com.my.project.* -- -l "com.my.project.path.tags.ValidationTest"
  • testOnly 仅涉及单元测试,如果您应该进行集成测试,您应该使用例如it:testOnly * -- -l "path.to.Tag"