2015-01-06 8 views
8

मेरे पास बहुत सारे स्केलेचेक जनरेटर के साथ एक प्रोजेक्ट है जो संदेश के साथ जेनरेटरड्रिवेनप्रॉपर्टी चेकफेल अपवाद प्राप्त कर रहा है "0 सफल संपत्ति मूल्यांकन के बाद दिया गया। 2 मूल्यांकन रद्द कर दिए गए।"क्यों मेरी Scalacheck/Scalatest PropertyCheckConfig पर ध्यान नहीं दिया जा रहा है?

मैं इसे 500 (डिफ़ॉल्ट) की तरह कई बार मूल्यांकन करने की कोशिश करना चाहता हूं, लेकिन मुझे वास्तव में उपयोग में आने वाले मेरे कॉन्फ़िगरेशन ओवरराइड को नहीं देख रहा है।

मैं परीक्षण वर्ग के लिए इस कोड को जोड़ा और मैं अभी भी ठीक उसी संदेश हो रही है। मैंने यह सुनिश्चित करने के लिए 'एसबीटी क्लीन' की कोशिश की है कि वहां कुछ अजीब नहीं हो रहा था।

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

मेरा स्केलैच/स्केलेटेस्ट प्रॉपर्टी चेक कॉन्फ़िगर क्यों अनदेखा किया जा रहा है?

मैं Scalatest 2.2.1 का उपयोग कर रहा Scalacheck 1.12.1 साथ स्काला के साथ 2.10.4

उत्तर

9

आप जनरेटर छानने रहे हैं (उदाहरण के लिए, एक suchThat का उपयोग करके), जनरेटर एक बड़ी संख्या तैयार किया जा सकता है उन मानों का जो आपकी suchThat बाधा को संतुष्ट नहीं करते हैं और इसलिए उन्हें छोड़ दिया जाता है। जब मैं तारों की लंबाई को बाधित करता हूं तो मैंने इसमें भाग लिया है। एक सुझाव जो मैं आपको दे सकता हूं वह है कि अपने जनरल को एक अलग तरीके से बनाने और बनाने के लिए जहां आप उनमें से कई को नहीं हटा रहे हैं।

उदाहरण के लिए, यहाँ क्या मैं पहली बार 4-चरित्र तार पैदा करने के लिए किया था है:

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

इस के कारण भी कई उत्पन्न मूल्यों खारिज किया जा करने के लिए, एक आप देख रहे थे करने के लिए इसी तरह की एक त्रुटि में जिसके परिणामस्वरूप था। नीचे जनरेटर को बदलने से समस्या समाप्त हो गई।

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

बेहद उपयोगी युक्ति। इस समस्या को 'Gen.alphaNumStr.suchThat के साथ एक निश्चित लंबाई से अधिक नहीं के तार पैदा करने में भाग (_। लंबाई <= 50)' और 'Gen.choose (0, 50) .map (Gen.listOfN (के साथ हल _, Gen.alphaNumChar))। नक्शा (_। mkString) '। –

संबंधित मुद्दे