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

时间:2016-09-21 14:35:34

标签: scala sbt automated-tests scalatest

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

testOnly * -- -l "com.my.project.path.tags.ValidationTest"

我已尝试过此命令的许多变体,包括将*替换为类的路径或类似的路径:

testOnly "com.my.project.path.somePackage" -- -l "com.my.project.path.tags.ValidationTest"

我已尝试在包装周围使用和不使用引号。

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

"some method" should "fail when doing something" taggedAs ValidationTest in { ... }

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

当使用it关键字定义方法而不是"some method" should "fail..."

时,我也尝试了这一点

Sbt with ScalaTest在“包含和排除带有标记的测试”下显示以下内容

> 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"

1 个答案:

答案 0 :(得分:0)

只是几个猜测:

  • 所有这些语法仅适用于sbt控制台,并且不能从命令行工作;
  • 包名称应为不带引号,并且应以asterix结尾,标记应为WITH引号(例如testOnly com.my.project.* -- -l "com.my.project.path.tags.ValidationTest"
  • testOnly只关注单元测试,如果你应该进行集成测试,你应该使用例如it:testOnly * -- -l "path.to.Tag"