यूनिट टेस्टिंग, कोड कवरेज, और बेंचमार्क सही होना ज्यादातर सही टूल चुनने के बारे में है।
- परीक्षण ढांचे सब अपने को चलाने के लिए एक वन-स्टॉप शॉप प्रदान करता है HUnit परीक्षण मामलों और QuickCheck सब एक दोहन से गुण।
- कोड कवरेज HPC उपकरण के रूप में GHC में बनाया गया है ।
- मानदंड कुछ बहुत बढ़िया बेंचमार्किंग मशीनरी प्रदान करता है
मैं एक चल उदाहरण के रूप में उपयोग करूँगा जो मैंने अभी यूनिट परीक्षण, कोड कवरेज और बेंचमार्क के साथ सक्षम करना शुरू किया था:
http://github.com/ekmett/speculation
आप अपने परीक्षण और बेंचमार्क को सीधे अपने केबल फ़ाइल में उनके लिए अनुभाग जोड़कर, और उन्हें झंडे के पीछे से जोड़कर एकीकृत कर सकते हैं ताकि वे ऐसा न करें ताकि आपके पुस्तकालय के प्रत्येक उपयोगकर्ता को (और खुद के लिए उपयोग करना चाहते हैं) ) आपके द्वारा चुने गए परीक्षण उपकरणों का सटीक संस्करण।
http://github.com/ekmett/speculation/blob/master/speculation.cabal
फिर, आप अपने परीक्षण सूट को चलाने के बारे में कैबेल को बता सकते हैं। जैसा कि कैबल परीक्षण अभी तक मौजूद नहीं है - हमारे पास इस वर्ष की कोड की गर्मियों के लिए एक छात्र है! - हमारे पास सबसे अच्छा तंत्र यह है कि यहां कैबेल के उपयोगकर्ता हुक तंत्र का उपयोग कैसे किया जाए। इसका मतलब है कि 'कस्टम' बिल्ड का कैबेल के साथ स्विच करना और टेस्टहुक सेट करना। TestHook का एक उदाहरण जो टेस्ट-फ्रेमवर्क के साथ लिखे गए टेस्ट प्रोग्राम को चलाता है, और फिर hpc को प्रोफाइल पर लागू करता है, यह यहाँ पाया जा सकता है:
http://github.com/ekmett/speculation/blob/master/Setup.lhs
और फिर आप QuickCheck और HUnit परीक्षणों को एक कार्यक्रम में बंडल करने के लिए परीक्षण-ढांचे का उपयोग कर सकते हैं:
http://github.com/ekmett/speculation/blob/master/Test.hs
कोडल फ़ाइल को चालू करने के लिए कोड कवरेज परीक्षण को सक्षम करने के लिए -fhpc चालू करने के लिए सावधान है, और फिर Setup.lhs में testHook मैन्युअल रूप से hpc चलाता है और अपने डिस्ट डिर में अपना आउटपुट लिखता है।
बेंचमार्किंग के लिए, कहानी थोड़ा और मैनुअल है, कोई 'कैबेल बेंचमार्क' विकल्प नहीं है। आप अपने बेंचमार्क को अपने परीक्षण हुक में तार कर सकते हैं, लेकिन मैं उन्हें हाथ से चलाना पसंद करता हूं, क्योंकि मानदंड में बहुत अधिक ग्राफिकल रिपोर्टिंग विकल्प हैं। आप अपने बेंचमार्क को ऊपर दिखाए गए अनुसार कैबल फ़ाइल में जोड़ सकते हैं, उन्हें अलग-अलग संकलन झंडे दे सकते हैं, उन्हें एक काबल ध्वज के पीछे छिपा सकते हैं, और फिर सभी भारी उठाने के लिए मानदंड का उपयोग कर सकते हैं:
http://github.com/ekmett/speculation/blob/master/Benchmark.hs
फिर आप अपने बेंचमार्क को कमांड लाइन से चला सकते हैं और बेंचमार्क परिणामों के साथ पॉप-अप केडीई विंडो प्राप्त कर सकते हैं, आदि।
चूंकि हास्केल कोड विकसित करते समय आप कैबेल में रहते हैं, इसलिए यह आपके टूलचिन को इसके साथ एकीकृत करने के लिए बहुत मायने रखता है।
संपादित करें : काबाल परीक्षण समर्थन अब मौजूद है। Http://www.haskell.org/cabal/release/cabal-latest/doc/users-guide/developing-packages.html#test-suites देखें
cabal benchअब भी मौजूद है।