有没有办法使用Scalacheck为属性测试生成随机日期。我想要生成未来和过去的日期。但是现有的Scalacheck.Gen类没有提供任何预定义的方法。
答案 0 :(得分:2)
以下内容将生成您要找的内容
implicit val localDateArb = Arbitrary(localDateGen)
def localDateGen: Gen[LocalDate] = {
val rangeStart = LocalDate.MIN.toEpochDay
val currentYear = LocalDate.now(UTC).getYear
val rangeEnd = LocalDate.of(currentYear, 1, 1).toEpochDay
Gen.choose(rangeStart, rangeEnd).map(i => LocalDate.ofEpochDay(i))
}
答案 1 :(得分:0)
在乔达时代,我曾经这样使用:
lazy val localDateGen: Gen[LocalDate] = Gen.calendar map LocalDate.fromCalendarFields
答案 2 :(得分:0)
实际上,“生成未来和过去的日期”, 下面的实现更准确:
def localDateGen: Gen[LocalDate] =
Gen.choose(
min = LocalDate.MIN.toEpochDay,
max = LocalDate.MAX.toEpochDay
).map(LocalDate.ofEpochDay)
implicit val localDateArb = Arbitrary(localDateGen)