2015-01-06 16 views
8

"0 başarılı özellik değerlendirmesinden sonra çıkma" mesajıyla GeneratorDrivenPropertyCheckFailedException alan bir çok Scalacheck jeneratörü olan bir projem var. 2 değerlendirme atıldı.Scalacheck/Scalatest PropertyCheckConfig neden göz ardı ediliyor?

Bunu 500 (varsayılan) iyi olurdu gibi pek çok kez değerlendirmeyi denemek isterdim, ancak benim yapılandırma geçersiz kılma aslında kullanılmakta olduğunu görmüyorum.

Bu kodu test sınıfına ekledim ve hala aynı mesajı alıyorum. Ben sadece orada tuhaf bir şey olmadığından emin olmak için 'sbt temiz' denedim.

implicit override val generatorDrivenConfig = PropertyCheckConfig(minSuccessful = 1, maxDiscarded = 500, workers = 1) 

Scalacheck/Scalatest PropertyCheckConfig neden göz ardı ediliyor? Eğer (örneğin bir suchThat kullanarak) jeneratör filtreleme ise

Ben Scala ile Scalacheck 1.12.1 ile 2.2.1 Scalatest kullanıyorum

cevap

9

, jeneratör çok sayıda oluştururken 2.10.4 olabilir suchThat kısıtınızı karşılamayan ve dolayısıyla atılan değerlerin. Dizelerin uzunluğunu kısıtladığımda buna katılıyorum. Sana verebileceğim tek bir öneri, senin genini, birçoğunu atmadığın farklı bir şekilde denemek ve yaratmaktır.

Örneğin, burada ben ilk 4 karakter dizeleri oluşturmak için vardı şudur:

val gen4CharString = Gen.listOfN(4, (Gen.listOfN[Char] suchThat (s => s != "" && s.length == 4))) 

Bu görüştüğünü benzer bir hataya neden çok fazla üretilen değerler atılmasına neden oldu. Jeneratörün aşağıda olduğu gibi değiştirilmesi sorunu ortadan kaldırdı.

val gen4CharString = Gen.listOfN[Char] (4, Gen.alphaChar).map (_.mkString) 
+0

Son derece yararlı bir ipucu. Gen.alphaNumStr.suchThat (_. Length <= 50) 'ile belirli bir uzunluktan daha büyük olmayan ve Gen.choose (0, 50) .map (Gen.listOfN (_, Gen.alphaNumChar)). harita (_. mkString) '. –