0

我有一个关于 ScalaCheck 的新手问题,这是我第一次玩。是否有可能创建一个Gen[Int]从 0 到 N 线性发展的变量。

这样当我forAll在 ScalaCheck 中使用时,它会将输入增加Int1。

我希望这个示例以增加的值进行测试

"Increase" should "always increase" in {
  forAll(validNumbers){ i:Int =>
    increase(i) should be (i + 1)
  }
}

也许这会破坏 ScalaChecks 的目的,我应该在 ScalaTest 中以这种方式进行测试。

4

1 回答 1

1

你可以这样做:

def validNumbers(n: Int): Gen[Int] = Gen.resultOf[Int, Int] {
  new (Int => Int) {
    val current = (0 to n).iterator

    def apply(i: Int): Int = {
      if(current.hasNext) current.next else sys.error("No more numbers")
    }
  }
}

但是我认为你确实是对的,这破坏了 ScalaChecks 的目的。在这种情况下,一个简单的 for 循环会做得更好。

于 2014-07-03T14:37:19.737 回答