2012-05-31 17 views
5

को अनदेखा कर रहा है, मैं एक साधारण संपत्ति जांच को लागू करने की कोशिश कर रहा हूं लेकिन स्केलैच मेरे जेनरेटर को अनदेखा कर रहा है। मैं यहाँ क्या गलत कर रहा हूँ?स्केलेचेक प्रदत्त जेनरेटर

object AlgorithmTest extends Properties("Algorithm") { 
    property("Test") = forAll (Gen.choose(0,10)) (n => n>=0 & n<10) 
} 

और इस एसबीटी

[info] ! Algorithm.Test: Falsified after 12 passed tests. [info] > 
ARG_0: -1 [error] Failed: : Total 1, Failed 1, Errors 0, Passed 0, 
Skipped 0 
+0

इस मुद्दे को अब 'ऐसी थॉट' पोस्टकंडिशन के उपयोग के माध्यम से (अंतर्निर्मित जेनरेटर के लिए) तय किया गया है - https://github.com/rickynils/scalacheck/issues/8 – DNA

उत्तर

4

में परिणाम यह उदाहरण सिकोड़ें जो forAll विधि में भेजा जाता है जब छोटे जवाबी उदाहरण के लिए खोज जनरेटर का उपयोग नहीं कर रहा है की तरह लग रहा है।

property("Test") = Prop.forAllNoShrink(Gen.choose(1, 10)) (n => n >= 0 && n < 10) 

तो यह ठीक से साथ विफल करना चाहिए:: करने के लिए आप अपनी संपत्ति को बदलते हैं तो

property("Test") = Prop.forAll(Gen.choose(1, 10)) { n => 
    Prop.collect(n) { n >= 0 && n < 10 } 
} 

: हटना मूल्यों कल्पना करने के लिए

[info] ! Algorithm.Test: Falsified after 7 passed tests. 
[info] > ARG_0: 10 
[error] Failed: : Total 1, Failed 1, Errors 0, Passed 0, Skipped 0 

एक तरह से Prop.collect विधि का उपयोग करने के लिए है एकत्रित मान इस तरह दिखते हैं:

[info] ! Algorithm.Test: Falsified after 40 passed tests. 
[info] > ARG_0: -1 
[info] > Collected test data: 
[info] 17% 3 
[info] 17% 1 
[info] 15% 6 
[info] 12% 9 
[info] 10% 2 
[info] 10% 5 
[info] 7% 4 
[info] 7% 8 
[info] 2% -1 
[info] 2% 7 

जहां आप देख सकते हैं कि -1 को सिकुड़ने की प्रक्रिया के दौरान उपयोग किया गया है।

+1

देखें लेकिन यह दस्तावेज़ व्यवहार नहीं है। यदि मैं 1 और 10 के बीच जेनरेटर का उपयोग करता हूं तो सभी मान सीमा में होना चाहिए [1,10 [। कभी भी -1 – tonicebrian

+2

@ancechu दिखाई नहीं दे रहा है '-1' प्रकट होता है _after_ परीक्षण विफल हुआ, क्योंकि स्कैला चेक परीक्षण में विफल होने वाले सरल इनपुट को खोजने का प्रयास करता है - यह "सिकुड़ना" है। वह चरण पीढ़ी की प्रक्रिया का सम्मान नहीं करता है - चाहे वह एक बग या आंतरिक सीमा है, मुझे नहीं पता। –

+0

मुझे कल खोजना चाहिए था लेकिन इस मुद्दे पर वास्तव में चर्चा की गई है [यहां] (https://github.com/rickynils/scalacheck/issues/18) – Eric

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

  • कोई संबंधित समस्या नहीं^_^