如何使用scalacheck轻松生成多头?

时间:2015-01-04 08:10:28

标签: scala scalatest scalacheck

我试过

  val arbLong: Gen[Long] = {
    Gen.frequency((20, Arbitrary.arbLong), (20, null)).sample.get.arbitrary
  }


  "arbLong" should "be able to generate null values" in {
    forAll(arbLong) { (generatedLong: Long) =>
      println(generatedLong)
    }

  }

所以它确实为long生成了一个null,但是我得到NullPointerException很可能是因为Long无法保持null使用包含{{0}}的任意长生成器的正确方法是什么{1}}?

1 个答案:

答案 0 :(得分:2)

Scala的Long不能为空(Pass null to a method expects Long)。如果您想代表可能存在或不存在的Long,请使用java.lang.Long

val arbLong: Gen[java.lang.Long] = {
  Gen.frequency((20, Arbitrary.arbLong), (20, null)).sample.get.arbitrary
}

Option[Long](请参阅Generate Option[T] in ScalaCheck)。