帮助ScalaCheck

Ale*_*sky 5 scala scalatest scalacheck

我想使用ScalaTest的Checkers特性从ScalaTest案例中使用ScalaCheck.

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

 test("can create local date UTC from millis") {
     check(localDate.toTimestampUTC.toLocalDateUTC == localDate)
 }
Run Code Online (Sandbox Code Playgroud)

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

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

它没有编译,说,

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

错误:未找到:value localDate check(localDate.toTimestampUTC.toLocalDateUTC == localDate)

Ale*_*sky 7

好的通过反复试验弄清楚了.我的工作代码如下所示:

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)
}
Run Code Online (Sandbox Code Playgroud)

我不得不改变我创建Arbitrary [LocalDate]的方式,然后更新我的语法以进行检查.