0

我试过了

  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使用任意 long 生成器的正确方法,其中包括nulls

4

1 回答 1

2

ScalaLong不能为 null(将 null传递给方法需要 Long)。如果要表示Long可能存在或不存在的 s,请使用以下任一java.lang.Long

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

Option[Long](参见ScalaCheck 中的 Generate Option[T])。

于 2015-01-04T08:18:16.197 回答