在 sbt 中手动排除一些测试 类
Manually exclude some test classes in sbt
我通常在 CI 中执行以下命令:
干净更新编译测试发布
但是,我想从 sbt 命令行中排除 1 个(或几个)测试 class。
我该怎么做? (我不想更改我的代码以使用忽略等)
两种可能的选择
只是详细说明@Gonfva 上面建议的 2 个正确选项:
要使用 testOnly
你应该 运行:
sbt "testOnly org.fully.qualified.domainn.name.ASpec"
当参数是 class 的 FQDN 时。您可以使用多个 class,用 space 分隔它们。这也可以与 glob 一起使用。例如:
sbt "testOnly *ASpec"
使用标签。首先定义一个标签:
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"
我通常在 CI 中执行以下命令:
干净更新编译测试发布
但是,我想从 sbt 命令行中排除 1 个(或几个)测试 class。
我该怎么做? (我不想更改我的代码以使用忽略等)
两种可能的选择
只是详细说明@Gonfva 上面建议的 2 个正确选项:
要使用
testOnly
你应该 运行:sbt "testOnly org.fully.qualified.domainn.name.ASpec"
当参数是 class 的 FQDN 时。您可以使用多个 class,用 space 分隔它们。这也可以与 glob 一起使用。例如:
sbt "testOnly *ASpec"
使用标签。首先定义一个标签:
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"