Java 如何报告scalacheck.Prop.forAll属性测试的所有测试用例输入?

Java 如何报告scalacheck.Prop.forAll属性测试的所有测试用例输入?,java,scala,functional-programming,scalacheck,property-testing,Java,Scala,Functional Programming,Scalacheck,Property Testing,在使用scalacheck时,如果我们使用forAll测试任何属性,那么我们只会收到报告的失败测试输入,而没有通过测试输入 scala> import org.scalacheck.Prop.forAll scala> val propConcatLists = forAll { (l1: List[Int], l2: List[Int]) => l1.size + l2.size == (l1

在使用scalacheck时,如果我们使用forAll测试任何属性,那么我们只会收到报告的失败测试输入,而没有通过测试输入

scala> import org.scalacheck.Prop.forAll 
scala> val propConcatLists = forAll { (l1: List[Int], l2: List[Int]) =>
                                        l1.size + l2.size == (l1 ::: l2).size }
scala> propConcatLists.check
 + OK, passed 100 tests.

有没有办法将forAll提供的所有随机测试输入报告给相应的属性测试?

使用
收集

此玩具示例说明了其用途:

import org.scalacheck.Prop.{forAll,collect}

val q = forAll { (m: Int, n: Int) => collect(m, n, m+n) { m + n != 37 } }
q.check
上面的代码产生这个输出

+正常,通过100次测试。
>收集的测试数据:
2% (0,-1,-1)
2% (-1,0,-1)
2% (-1,2147483647,2147483646)
1% (1,0,1)
1% (-1199549050,-1564573392,1530844854)
1% (2147483647,0,2147483647)
1% (-1,-2147483648,2147483647)
免责声明:这个玩具示例显然不是一个精心设计的性能测试。虽然一对任意的
int
总和决不等于37肯定不是真的,但它通过了
ScalaCheck
,因为
ScalaCheck
产生的两个任意
int
总和等于37的几率非常小。但是如果将37更改为-2、-1、0、1或2中的任何一个,测试可能会失败,因为值-1、0和1是由
Scalacheck的
隐式
任意[Int]
生成器异常频繁地生成的

+ OK, passed 100 tests.
> Collected test data: 
2% (0,-1,-1)
2% (-1,0,-1)
2% (-1,2147483647,2147483646)
<snip>
1% (1,0,1)
1% (-1199549050,-1564573392,1530844854)
1% (2147483647,0,2147483647)
1% (-1,-2147483648,2147483647)