gpt4 book ai didi

scala - 如何默认禁用 "Slow"标记的 Scalatests,允许使用选项执行?

转载 作者:行者123 更新时间:2023-12-04 01:06:51 25 4
gpt4 key购买 nike

我想默认禁用某些标记为“慢”的自动化测试,但允许用户使用简单的命令行启用它们的执行。我想这是一个非常常见的用例。

鉴于此测试套件:

import org.scalatest.FunSuite
import org.scalatest.tagobjects.Slow

class DemoTestSuite extends FunSuite {
test("demo test tagged as slow", Slow) {
assert(1 + 1 === 2)
}

test("demo untagged test") {
assert(1 + 1 === 2)
}
}

默认情况下, sbt test将运行标记和未标记的测试。

如果我将以下内容添加到我的 build.sbt:
testOptions in Test += Tests.Argument("-l", "org.scalatest.tags.Slow")

然后我得到了我想要的默认行为,其中未标记的测试运行,而慢速标记的测试不会运行。

但是,当我想运行它们时,我无法找出将运行慢速测试的命令行选项。我已经做了几次搜索并尝试了几个例子。我有点惊讶,因为这似乎是一个非常普遍的场景。

最佳答案

我有一个类似的问题:我希望默认情况下禁用测试,但在发布过程中运行。我通过创建 custom test configuration 解决了它和设置 testOptions在不同的范围内。因此,根据您的情况调整此解决方案,它应该是这样的(在您的 build.sbt 中):

lazy val Slow = config("slow").extend(Test)
configs(Slow)
inConfig(Slow)(Defaults.testTasks)

现在默认排除慢测试:
testOptions in Test += Tests.Argument("-l", "org.scalatest.tags.Slow")

但是在 Slow范围不排除它们并只运行它们:
testOptions in Slow -= Tests.Argument("-l", "org.scalatest.tags.Slow")
testOptions in Slow += Tests.Argument("-n", "org.scalatest.tags.Slow")

现在当你运行 test在 sbt 中,除了慢速测试和运行时,它会运行所有内容 slow:test它只会运行缓慢的测试。

关于scala - 如何默认禁用 "Slow"标记的 Scalatests,允许使用选项执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41229451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com