scala 手动排除SBT中的某些测试类

bzzcjhmw  于 2022-11-09  发布在  Scala
关注(0)|答案(3)|浏览(173)

我通常在我的配置文件中执行以下命令:
清除更新编译测试发布
然而,我想从SBT命令行中排除一个(或几个)测试类。
我怎么能这样做呢?(我不想将代码更改为使用忽略等)

kxxlusnw

kxxlusnw2#

仅就上面建议的两个正确选项@Gonfva进行详细说明:
1.要使用testOnly,您应该运行:

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

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

sbt "testOnly *ASpec"

1.使用标签。首先,定义一个标记:

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

然后,使用此标记定义一个测试:

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

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

sbt "testOnly * -- -n tagName"

注:*是一个通配符。它可以是第1节中描述的任何全局。
要排除此标记,您需要运行:

sbt "testOnly * -- -l aaa"
x33g5p2x

x33g5p2x3#

包括或排除测试取决于您正在使用的测试框架。您将在SBT中使用的命令不是完全由SBT解析的,而是部分由SBT解析的,部分由您使用的测试框架解析。
因此,如果您要起诉scalameta/munit,您可以输入如下命令:

sbt> myproject/Test/testOnly MyProjectTest -- --exclude-tags=tag1,tag2,tag3

如果您使用的是另一个测试框架,则--之后的特定语法可能会有所不同。
显然,当您编写测试用例时,您必须在某个地方添加标记。更多详细信息可在下面找到:

相关问题