gpt4 book ai didi

scala - 动态创建测试 sbt

转载 作者:行者123 更新时间:2023-12-04 14:01:34 26 4
gpt4 key购买 nike

我正在尝试通过以下方式动态运行一些基本测试(这是我测试的伪代码,我的实际测试有点复杂):

class ExampleTest extends AnyWordSpec {

def runTests() = {
for( n <- 1 until 10){
testNumber(n)
}
}

def testNumber(n: Int) = {
"testNumber" when {
s"gets the number ${n}" should {
"fail if the number is different than 0" {
assert(n == 0)
}
}
}
}

runTests()

}

当我尝试在 IntelliJ 中运行我的测试时,所有测试都按预期运行。但是当使用 sbt tests 它说我的所有测试都通过了,即使我的测试没有实际执行(我收到消息“1 个测试套件已执行。0 个测试已执行”)。我怎样才能解决这个问题?还有其他简单的方法可以在 Scala 中动态创建测试吗?)

最佳答案

如评论中所述,我不确定 sbt 的问题是什么。

您可以尝试动态创建测试的另一种方法是使用基于属性的测试。

一种可能的方法是使用表驱动的属性检查,如以下示例所示(您可以在操作中看到 here on Scastie ):

import org.scalatest.wordspec.AnyWordSpec
import org.scalatest.prop.TableDrivenPropertyChecks._

class ExampleTest extends AnyWordSpec {

private val values = Table("n", (1 to 10): _*)

"testNumber" when {
forAll(values) { n =>
s"gets the number ${n}" should {
"fail if the number is different than 0" in {
assert(n == 0)
}
}
}
}

}

当然,所有这些测试都会失败。 ;-)

有关该主题的 ScalaTest 文档的链接:

关于scala - 动态创建测试 sbt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69870748/

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