2012-11-23 20 views
10

Batch क्विक चेक के मॉड्यूल को version 2 (1.2.0.1 still has it) से हटा दिया गया था। इस वजह से, मैं हमेशा mapM_ की तरह महसूस कर रहा हूं- कई परीक्षण एक साथ हैकी की तरह है। क्या मैं क्विक चेक 2 में उत्तराधिकारी सुविधा देख रहा हूं? स्वतंत्र परीक्षणों को एक साथ समूहित करने का एक कैननिक तरीका है?क्विक चेक 2 बैच प्रोसेसिंग

+3

पर देखो [ 'परीक्षण framework'] (http://hackage.haskell.org/package/test-framework) और [' परीक्षण ढांचा-quickcheck2'] (http: // hackage .haskell.org/पैकेज/परीक्षण ढांचा-quickcheck2)। – dflemstr

उत्तर

9

Test.QuickCheck.All के माध्यम से वर्तमान मॉड्यूल में सभी परीक्षणों को एक साथ समूहित करने का 'बड़ा या घर जाओ' विकल्प है। इसके लिए टेम्पलेट हास्केल की आवश्यकता है, और सभी गुण prop_ से शुरू होना चाहिए। उदाहरण के लिए:

{-# LANGUAGE TemplateHaskell #-} 

import Test.QuickCheck.All 

prop_one, prop_two :: a -> Bool 
prop_one = const True 
prop_two = const True 

runTests :: IO Bool 
runTests = $quickCheckAll 

main :: IO() 
main = runTests >>= \passed -> if passed then putStrLn "All tests passed." 
             else putStrLn "Some tests failed." 
+1

दो महत्वपूर्ण नोट्स: सबसे पहले, आयातित मॉड्यूल से गुण शामिल नहीं लगते हैं। दूसरा, (और यह बहुत अजीब लग रहा है), जीएचसी 7.8 में आपको 'runTests = $ quickCheckAll' पंक्ति से पहले' वापसी [] 'डालना होगा। अधिक जानकारी के लिए [मॉड्यूल हैडॉक पेज] देखें (http://hackage.haskell.org/package/QuickCheck-2.7.6/docs/Test-QuickCheck-All.html)। – MasterMastic

+0

यदि आप एक कैबल टेस्ट-सूट के माध्यम से परीक्षण कर रहे हैं, तो यह 'मुख्य' शायद आपको बेहतर लगेगा: 'main = runTests >> = \ pass -> अगर पास हो गया तो बाहर निकलें और आगे निकलें विफलता '। और आपको सिस्टम आयात करने की भी आवश्यकता होगी। एक्जिट (exitSuccess, exitFailure) '। – MasterMastic

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