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

anu*_*uni 5 scala sbt scalatest

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

干净更新编译测试发布

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

我怎样才能做到这一点?(我不想更改我的代码以使用忽略等)

Tom*_*tah 5

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

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

    sbt "testOnly org.fully.qualified.domainn.name.ASpec"
    
    Run Code Online (Sandbox Code Playgroud)

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

    sbt "testOnly *ASpec"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用标签。首先,定义一个标签:

    import org.scalatest.Tag
    object CustomTag extends Tag("tagName")
    
    Run Code Online (Sandbox Code Playgroud)

    然后,使用此标签定义测试:

    it should "test1" taggedAs CustomTag in { println("test1") }
    
    Run Code Online (Sandbox Code Playgroud)

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

    sbt "testOnly * -- -n tagName"
    
    Run Code Online (Sandbox Code Playgroud)

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

    为了排除此标签,您需要运行:

    sbt "testOnly * -- -l aaa"
    
    Run Code Online (Sandbox Code Playgroud)