gpt4 book ai didi

scala - 使 ScalaCheck 测试具有确定性

转载 作者:行者123 更新时间:2023-12-02 17:23:44 25 4
gpt4 key购买 nike

我想暂时使我的specs2测试套件中的ScalaCheck属性测试具有确定性,以简化调试。现在,每次重新运行测试套件时都可能生成不同的值,这使得调试令人沮丧,因为您不知道观察到的行为的变化是由代码更改引起的,还是只是由生成的不同数据引起的。

我该怎么做?是否有官方方法来设置 ScalaCheck 使用的随机种子?

我正在使用 sbt 运行测试套件。

额外问题:是否有一种官方方法可以打印 ScalaCheck 使用的随机种子,以便您可以重现非确定性测试运行?

最佳答案

如果您使用纯 ScalaCheck 属性,则应该能够使用 Test.Params 类来更改所使用的 java.util.Random 实例,并且提供您自己的,它总是返回相同的值集:

def check(params: Test.Parameters, p: Prop): Test.Result

[更新]

我刚刚发布了一个新的规范2-1.12.2-SNAPSHOT,您可以在其中使用以下语法来指定随机生成器:

case class MyRandomGenerator() extends java.util.Random {
// implement a deterministic generator
}

"this is a specific property" ! prop { (a: Int, b: Int) =>
(a + b) must_== (b + a)
}.set(MyRandomGenerator(), minTestsOk -> 200, workers -> 3)

关于scala - 使 ScalaCheck 测试具有确定性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12639454/

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