Scalacheck 冗长

Scalacheck verbosity

以 Scalacheck 用户指南中的示例为例:

scala> import org.scalacheck.Prop.{forAll, BooleanOperators}

scala> val propTrivial = forAll { n: Int =>
     |  (n == 0) ==> (n == 0)
     | }

scala> propTrivial.check
! Gave up after only 4 passed tests. 500 tests were discarded.

我想查看导致测试失败的实际值。我的项目中有一个类似的测试用例,它会产生类似的(无用的)消息。

我尝试将详细选项添加到 sbt:

testOptions in Test += Tests.Argument(TestFrameworks.ScalaCheck, "-verbosity", "5")

并且还尝试像

这样调用 属性
testOptions in Test += Tests.Argument(TestFrameworks.ScalaCheck, "-verbosity", "5")

但都不起作用。我无法获得更多输出。

在这种情况下,没有值导致测试失败,但是ScalaCheck因为找不到足够的值来尝试而放弃了。这就是为什么它说 500 tests were discarded - 这不是无用的错误消息,它只是说生成的值不符合您的 n == 0 前提条件。

如果您尝试 失败的测试,它会告诉您失败的测试:

scala> forAll { n: Int => n > 0 }
res0: org.scalacheck.Prop = Prop

scala> res0.check
! Falsified after 2 passed tests.
> ARG_0: -2147483648