Rob*_*een 16 scala scalacheck specs2
我想暂时在我的specs2测试套件中进行ScalaCheck属性测试,以便于调试.现在,每次重新运行测试套件时都会生成不同的值,这会使调试变得令人沮丧,因为您不知道观察到的行为的变化是由代码更改引起的,还是仅仅是由生成的不同数据引起的.
我怎样才能做到这一点?是否有正式的方法来设置ScalaCheck使用的随机种子?
我正在使用sbt运行测试套件.
奖金的问题:是否有一个正式的方式打印出由ScalaCheck使用的随机种子,这样就可以重现即使是非确定性的试运行?
Eri*_*ric 11
如果您使用的是纯ScalaCheck属性,那么您应该能够使用Test.Params该类来更改所使用的java.util.Random实例并提供您自己的 实例,它始终返回相同的值集:
def check(params: Test.Parameters, p: Prop): Test.Result
[更新]
我刚刚发布了一个新的specs2-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)
Run Code Online (Sandbox Code Playgroud)