在 sbt 中手动排除一些测试 类

Manually exclude some test classes in sbt

我通常在 CI 中执行以下命令:

干净更新编译测试发布

但是,我想从 sbt 命令行中排除 1 个(或几个)测试 class。

我该怎么做? (我不想更改我的代码以使用忽略等)

两种可能的选择

  1. test-only 参见 http://www.scalatest.org/user_guide/using_scalatest_with_sbt
  2. 标签http://www.scalatest.org/user_guide/tagging_your_tests

只是详细说明@Gonfva 上面建议的 2 个正确选项:

  1. 要使用 testOnly 你应该 运行:

    sbt "testOnly org.fully.qualified.domainn.name.ASpec"
    

    当参数是 class 的 FQDN 时。您可以使用多个 class,用 space 分隔它们。这也可以与 glob 一起使用。例如:

    sbt "testOnly *ASpec"
    
  2. 使用标签。首先定义一个标签:

    import org.scalatest.Tag
    object CustomTag extends Tag("tagName")
    

    然后,用这个标签定义一个测试:

    it should "test1" taggedAs CustomTag in { println("test1") }
    

    现在,为了包含使用此标签的测试,运行:

    sbt "testOnly * -- -n tagName"
    

    注意:* 是通配符。它可以是第 1 节中描述的任何 glob。

    为了排除这个标签,你需要运行:

    sbt "testOnly * -- -l aaa"