2014-01-10 4 views
1

Scalacheck을 사용 중이며 주어진 크기의 콜렉션을 생성하려고합니다. scalaCheck의 특수 함수는 Gen.listOfN(size, Gen[T])입니다. forAll 메서드에서 생성 된 컬렉션의 크기를 인쇄 할 때 항상 정의 된 크기를 가진 것은 아닙니다. 실제로 그것은 첫 번째 시도에서 주어진 크기를 가지고 있습니다. 예를 들어, 크기 6 -> 컬렉션의 크기를 처음 시도하면 6, 두 번째 시도 크기는 3입니다. 내가 뭘 잘못하고 있니?ScalaCheck 수집 생성기

답변

1

ScalaCheck의 이전 버전 (1.11.0 이전 버전)을 사용하는 것처럼 들립니다. 이 버전에서는 생성기 경계가 항상 존중되지는 않았습니다.

ScalaCheck가 속성에 실패한 테스트 사례를 발견하면 해당 테스트 사례를 단순화하려고 시도합니다 ("작게"). 요즘 (version> = 1.11.0) ScalaCheck는이 단순화를 수행 할 때 listOfN 예를 존중하려고 시도하지만 n보다 적은 수의 테스트 목록은 고려하지 않습니다. 그러나 어떤 경우에는 ScalaCheck가 Gen.map 메서드를 사용할 때와 같이 처음부터 생성기의 경계를 알 수없는 경우도 있습니다. ScalaCheck 여전히 예상치 못한 방법으로 테스트 케이스를 단순화 할 수있다 (그리고 당신이 그것을 완화하기 위해 무엇을 할 수 있는지) 사례에 대한 자세한 내용은

, 참조 : Scalacheck won't properly report the failing case

+0

사용하지 않도록하는 방법에 대한 지침 당신은 알고 있습니까 '지도 경계 (또는 다른 메타) 정보가 손실되는 것을 피하려면? –

+0

유일한 일반적인 충고는'Gen.suchThat' 메서드를 사용하여 생성기의 불변성을 간단히 다시 추가하는 것입니다. 발전기/축소 기능이 개선의 대상이므로 문제가있는 특정 사용 사례가있는 경우 해당 항목에 대해 듣게되어 기쁩니다. –