【问题标题】:Exclude Specifically Tagged tests from SBT when using ScalaTest使用 ScalaTest 时从 SBT 中排除特别标记的测试
【发布时间】:2017-01-29 21:10:56
【问题描述】:

尝试从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 { ... }

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

当方法使用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"

【问题讨论】:

  • 明确地说,您是否希望这些标签运行?听起来您不希望带有该标签的东西运行,我不相信 ScalaTest 支持。
  • ScalaTest 绝对确实 支持跳过这些标签,或者通过-n-l 标志包括它们。见这里:ScalaTest with Sbt。请参阅页面下方的 3/4。
  • 我知道这是一篇旧帖子,但我试图重现您的问题,但无法重现。你还在遇到这个问题吗?

标签: scala sbt automated-tests scalatest


【解决方案1】:

只是几个猜测:

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

【讨论】:

  • 我没有测试过这个——但是是的,我认为这与我没有使用 sbt 控制台有关——也没有使用引号
  • 那么我怎样才能从命令行做任何相同的事情呢?
  • 要尝试的一件事是将命令作为参数传递给 sbt 控制台,例如在批处理文件/shell脚本中。我还没有尝试过,不知道是否有可能。
猜你喜欢
  • 2012-05-05
  • 1970-01-01
  • 1970-01-01
  • 2011-08-01
  • 2014-07-26
  • 2014-06-14
  • 1970-01-01
  • 2014-07-18
  • 1970-01-01
相关资源
最近更新 更多