2012-04-26 14 views
8

quickCheck के एक प्रशंसक होने के नाते, मैं अपने कार्यक्रम के दौरानस्वचालित रूप से इकट्ठा सभी quickChecks

prop_something_something = ... 

की एक बहुत कुछ है।

सुविधा के लिए, आसानी से उन सभी को चलाने के लिए, मैं

runchecks = do 
    quickCheck prop_something_something 
    quickCheck prop_something_different 

परिभाषित लेकिन वहाँ एक अच्छा तरीका runchecks उत्पन्न करने के लिए है?

टीएल; डीआर: मैं आसानी से फाइल में सभी त्वरित जांच को चलाने के लिए चाहता हूं। मुझे लगता है कि एक तरीका test_ या कुछ समान के साथ चलने योग्य परीक्षणों को उपसर्ग करना है, लेकिन यह बहुत हैकी हो सकता है।

उत्तर

7

आप इसे test-framework-th पैकेज के साथ कर सकते हैं। बस कार्य करें:

import Test.Framework.TH 
import Test.Framework.Providers.QuickCheck2 
runchecks = $(defaultMainGenerator) 

यह परीक्षण चलाने का test-framework तरह से उपयोग करेगा, यानी आप आप बस अन्य है, जो अक्सर एक अच्छी बात है के बाद परीक्षण एक चलाकर मिलता था क्या की तुलना में थोड़ा और अधिक जानकारी प्राप्त करेंगे ।

आपको इसके लिए काम करने के लिए सक्षम होने के लिए TemplateHaskell की आवश्यकता है; या तो अपनी कैबल फ़ाइल में Default-extensions: TemplateHaskell जोड़ें, या फ़ाइल के शीर्ष पर {-# LANGUAGE TemplateHaskell #-} जोड़ें।

+0

बस इसे जोड़कर, मुझे यह त्रुटि मिलती है: http://hpaste.org/67672 - क्या मुझे अन्य परिवर्तन करना है? यदि आप चाहें तो मैं अधिक कोड पेस्ट करूंगा। –

+0

जाहिर है, आपको 'क्विक चेक 2' प्रदाता मॉड्यूल भी शामिल करना होगा, जो मुझे लगता है कि मुझे लगता है। अधिक जानकारी के लिए मेरा अद्यतन उत्तर देखें। – dflemstr

+0

हां, आयात test.Framework.Providers.QuickCheck2 काम किया। धन्यवाद। :) –

8

एक अतिरिक्त नोट: यह कार्यक्षमता क्विक चेक 2 में बॉक्स से बाहर मौजूद है, फ़ंक्शन quickCheckAll देखें, जिसके लिए Test.QuickCheck.All के आयात के साथ-साथ TemplateHaskell आयात करना आवश्यक है। quickCheckAll आपके मॉड्यूल के सभी कार्यों का परीक्षण करेगा जिसका नाम prop_ से शुरू होता है।