【问题标题】:Help with ScalaCheckScalaCheck 帮助
【发布时间】:2011-11-27 06:56:08
【问题描述】:

我想使用 ScalaTest 的 Checkers 特征来使用 ScalaTest 案例中的 ScalaCheck。

我正在玩的一个简单案例是:

 test("can create local date UTC from millis") {
     check(localDate.toTimestampUTC.toLocalDateUTC == localDate)
 }

我需要创建一个任意的 LocalDate,所以我尝试了这个:

object ArbitraryValues {
    implicit def abc(): Arbitrary[LocalDate] = Arbitrary(Gen.choose(new LocalDate(0L), new LocalDate(Long.MaxValue)))
}

它不编译,说,

错误:找不到参数 c 的隐式值: org.scalacheck.Choose[org.joda.time.LocalDate] 隐式 val abc: 任意 [LocalDate] = 任意 (Gen.choose(new LocalDate(0L), new LocalDate(Long.MaxValue)))

错误:未找到:值 localDate 检查(localDate.toTimestampUTC.toLocalDateUTC == localDate)

【问题讨论】:

    标签: scala scalatest scalacheck


    【解决方案1】:

    好的,通过反复试验找到了答案。我的工作代码如下所示:

    object ArbitraryValues {
        implicit val abc: Arbitrary[LocalDate] = Arbitrary(Gen.choose(0L, Long.MaxValue).map(new LocalDate(_)))
    }
    
    test("can create local date UTC from millis -and- vice versa") { check((localDate: LocalDate) =>
        localDate.toTimestampUTC.toLocalDateUTC == localDate)
    }
    

    我必须更改创建 Arbitrary[LocalDate] 的方式,然后更新检查的语法。

    【讨论】:

    • 是的,Gen.choose[T](minT: T, maxT: T) 需要一个类型为 Choose[T] 的隐式对象。所以你可以通过实现 Choose[LocalDate] 来解决它,但你想出的解决方案可能更干净。
    猜你喜欢
    • 1970-01-01
    • 2018-12-21
    • 2011-06-20
    • 2011-07-28
    • 2011-10-04
    • 2011-08-03
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    相关资源
    最近更新 更多