我正在使用Scalacheck並希望生成給定大小的集合。在scalaCheck中有一個特殊功能,Gen.listOfN(size, Gen[T])
。 當我在forAll
方法中打印生成的集合的大小時,它並不總是具有定義的大小。實際上它只在第一次嘗試時具有給定的尺寸。例如,大小6 - >第一次嘗試收集的大小是6,第二次嘗試的大小隻有3。我在做什麼錯了?ScalaCheck集合生成器
1
A
回答
1
這聽起來像你可能會使用一箇舊的(前1.11.0)版本的ScalaCheck。在這些版本中,發電機邊界並不總是受到尊重。
當ScalaCheck發現您的屬性失敗的測試用例時,它會嘗試簡化該測試用例(使它變得更小)。如今(版本> = 1.11.0),ScalaCheck試圖在進行這種簡化時試圖遵守示例listOfN
,而不是測試列表中包含的項目少於n
。但是,在某些情況下,ScalaCheck仍不可能知道發電機從一開始就有什麼界限,例如當您使用Gen.map
方法時。
有關何時ScalaCheck仍可能以意想不到的方式簡化測試用例(你可以做,以減輕它是什麼)的案件的詳細信息,請參閱:Scalacheck won't properly report the failing case
相關問題
- 1. scalacheck中常規類的生成器
- 2. 如何定義生成序列元素子集的ScalaCheck生成器?
- 3. 使用ScalaCheck生成數據庫數據
- 4. 如何用ScalaCheck生成混洗序列?
- 5. 使用集合集合生成XML
- 6. 從scala集合中檢索生成器
- 7. 在ScalaCheck中創建unicode和unicode,但沒有空白生成器
- 8. 如何在內部使用ScalaCheck生成器來理解?
- 9. 根據另一個Gen定義ScalaCheck生成器
- 10. ScalaCheck,JUnit以默認生成器中的NoSuchMethod異常結束
- 11. 這些scalacheck遞歸生成器爲什麼不等價?
- 12. Scalacheck忽略了提供的發生器
- 13. 生成可以在ScalaCheck中通過特定字符集編碼的字符串
- 14. Spring集成聚合器
- 15. 如何在Scala中生成一組集合的功率集合
- 16. 生成日期的集合從對象集合
- 17. Excel組合生成器
- 18. 解析XML文件的集合以生成合成報告
- 19. 如何讓Jxls生成多個集合
- 20. 實體框架生成嵌套集合
- 21. 倍頻程生成組合子集
- 22. 的wsimport不會生成集合
- 23. NHibernate強制生成集合插入
- 24. LINQ的動態集合生成
- 25. 生成有序集合整數
- 26. 在perl中生成數組集合
- 27. 在C#中生成整數集合#
- 28. 生成Mandelbrot集合的圖像
- 29. 從數據庫生成隨機集合
- 30. 使用集合生成子串
你知道的任何指引如何避免使用'地圖'爲了避免邊界(或其他元)信息迷路? –
唯一的一般建議是使用'Gen.suchThat'方法簡單地添加生成器的不變量。發生器/收縮功能是改進的目標,因此如果您有任何特別的用例會讓您覺得很麻煩,我很樂意聽到這些信息。 –