如何使用scalacheck生成器生成时间?

时间:2016-06-22 14:39:39

标签: scalacheck

有没有办法使用Scalacheck为属性测试生成随机日期。我想要生成未来和过去的日期。但是现有的Scalacheck.Gen类没有提供任何预定义的方法。

3 个答案:

答案 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)