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

sbt> test-only * -- -l RemoteTest

但是,在执行此操作时,我的所有测试都在运行,包括RemoteTest。如何调用从SBT内的亚军,使其被排除在外?

最佳答案

如果您具有以下条件:

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

请注意,您需要包括完整的标签名称。如果仍然不适合您,您是否愿意共享部分无效的源代码?

10-06 11:13