【问题标题】:Excluding a ScalaTest test when calling my tests from within sbt从 sbt 中调用我的测试时排除 ScalaTest 测试
【发布时间】:2012-05-05 08:35:44
【问题描述】:

我想编写一个调用远程服务器并验证响应的测试,因为服务器可能会发生变化(它不在我的控制之下)。为此,我想我会先 give it a tag (RemoteTest) 然后 exclude it when calling the runner:

sbt> test-only * -- -l RemoteTest

但是,在执行此操作时,我的所有测试都会运行,包括 RemoteTest。如何从 sbt 中调用跑步者以将其排除在外?

【问题讨论】:

  • 虽然它不能以任何方式回答您的问题,但最好使用存根和 mocks 来处理此类变化。
  • 我基本上是这样。但我仍然想知道我的 API 是否发生了变化。

标签: scala sbt scalatest


【解决方案1】:

如果您有以下情况:-

package com.test

import org.scalatest.FlatSpec
import org.scalatest.Tag

object SlowTest extends Tag("com.mycompany.tags.SlowTest")
object DbTest extends Tag("com.mycompany.tags.DbTest")

class TestSuite extends FlatSpec {

  "The Scala language" must "add correctly" taggedAs(SlowTest) in {
      val sum = 1 + 1
      assert(sum === 2)
    }

  it must "subtract correctly" taggedAs(SlowTest, DbTest) in {
    val diff = 4 - 1
    assert(diff === 3)
  }
}

要排除 DbTest 标记,您可以:-

test-only * -- -l com.mycompany.tags.DbTest

请注意,您需要包含完整的标签名称。如果它仍然对您不起作用,您介意分享部分不起作用的源代码吗?

【讨论】:

  • 哈,这么简单!我完全错过了它必须是完全限定的名称。
猜你喜欢
  • 2017-01-29
  • 2014-07-26
  • 2014-07-18
  • 2011-08-01
  • 1970-01-01
  • 2015-07-10
  • 2017-09-25
  • 2012-06-18
  • 2015-05-23
相关资源
最近更新 更多