【问题标题】:How to generate time using scalacheck generators?如何使用 scalacheck 生成器生成时间?
【发布时间】:2021-05-25 16:24:58
【问题描述】:

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

【问题讨论】:

    标签: scalacheck


    【解决方案1】:

    以下将生成您要查找的内容

    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))
    }
    

    【讨论】:

    • @truptirath 看起来你应该接受答案,如果它满足你的需要。
    【解决方案2】:

    对于joda时间,我是这样使用的:

    lazy val localDateGen: Gen[LocalDate] = Gen.calendar map LocalDate.fromCalendarFields
    

    【讨论】:

      【解决方案3】:

      实际上,“生成未来和过去的日期”, 下面的实现更准确:

      def localDateGen: Gen[LocalDate] =
            Gen.choose(
              min = LocalDate.MIN.toEpochDay,
              max = LocalDate.MAX.toEpochDay
            ).map(LocalDate.ofEpochDay)
      implicit val localDateArb = Arbitrary(localDateGen)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-02
        • 2015-05-17
        • 2015-05-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多