【发布时间】:2021-05-25 16:24:58
【问题描述】:
有没有办法使用 Scalacheck 为属性测试生成随机日期。我想生成未来和过去的日期。但是现有的 Scalacheck.Gen 类没有提供任何预定义的方法来做到这一点。
【问题讨论】:
标签: scalacheck
有没有办法使用 Scalacheck 为属性测试生成随机日期。我想生成未来和过去的日期。但是现有的 Scalacheck.Gen 类没有提供任何预定义的方法来做到这一点。
【问题讨论】:
标签: scalacheck
以下将生成您要查找的内容
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))
}
【讨论】:
对于joda时间,我是这样使用的:
lazy val localDateGen: Gen[LocalDate] = Gen.calendar map LocalDate.fromCalendarFields
【讨论】:
实际上,“生成未来和过去的日期”, 下面的实现更准确:
def localDateGen: Gen[LocalDate] =
Gen.choose(
min = LocalDate.MIN.toEpochDay,
max = LocalDate.MAX.toEpochDay
).map(LocalDate.ofEpochDay)
implicit val localDateArb = Arbitrary(localDateGen)
【讨论】: