मैं अपने स्वचालित परीक्षण सुविधाओं को हनीट के साथ काम करने की कोशिश कर रहे दिन के एक अच्छे हिस्से के लिए कैबल के साथ लड़ रहा हूं। मैंने प्रलेखन here और here पढ़ा है, और मेरे पास मेरा टेस्ट-सूट अनुभाग स्थापित है जैसा कि यह दिखाता है, लेकिन जब भी मैं cabal build
का उपयोग कर पैकेज का प्रयास करता हूं और बनाता हूं तो कैबल का कहना है कि समर्थित एकमात्र टेस्ट-सूट प्रकार exitcode-stdio-1.0
है। क्या देता है?स्वत: परीक्षण करने के लिए हनीट और कैबल का उपयोग कैसे करें?
उत्तर
पृष्ठभूमि
तो यहाँ सौदा है, कबाल साइट पर प्रलेखन "भविष्य दस्तावेज़" है कि, नहीं उन सुविधाओं के सभी कार्यान्वित किया है और अभी तक जारी कर रहे हैं। Cabal-install 0.14.0 detailed-0.9
इंटरफ़ेस के साथ आता है, जो दस्तावेज़ों में निर्दिष्ट है (detailed-1.0
) के पीछे एक संस्करण है, लेकिन मुझे अभी तक इससे संबंधित किसी भी समस्या का सामना नहीं हुआ है। यदि आपके पास हास्केल प्लेटफ़ॉर्म संस्करण 2011.4 है जो कैबल-इंस्टॉल 0.10.2 के साथ आता है तो आप detailed-0.9
इंटरफ़ेस का उपयोग करने में सक्षम नहीं होंगे। आपको Haskell Platform 2012.2 में अपग्रेड करना होगा जो कैबल-स्थापित 0.14.0 के साथ आता है। आप केवल अलग-अलग कैबल-इंस्टॉलेशन को अपग्रेड कर सकते हैं, जो मैंने किया है क्योंकि फेडोरा 17 पर हास्केल प्लेटफॉर्म केवल 2011.4 पर है।
स्थापना
प्रलेखन here में आप कैसे QuickCheck साथ detailed-0.9
इंटरफेस का उपयोग करने का एक उदाहरण देखेंगे। यह कुछ संकुलों का उल्लेख करता है जिनमें हनीट, क्विक चेक 1 और क्विक चेक 2 के इंटरफेस हैं, लेकिन केवल क्विक चेक 2 के लिए पैकेज हैकेज पर उपलब्ध है। यदि आप शेष ढांचे के लिए पैकेज चाहते हैं तो आपको this स्थान से डाउनलोड करने के लिए आपको डार्क्स (एक वीसीएस) का उपयोग करने की आवश्यकता होगी। जिस आदेश को आप HUnit इंटरफ़ेस के लिए चलाने के लिए चाहते हैं वह यह है: darcs get http://community.haskell.org/~ttuegel/cabal-test-hunit/
। इसे बनाने के लिए आपको .cabal फ़ाइल को समायोजित करना पड़ सकता है, विशेष रूप से यह ghc 3.*
और cabal 1.10
पर निर्भर करता है। मैंने इसे अपने संस्करणों में बदल दिया (ghc 4.*
और cabal 1.14
) और यह ठीक बनाया गया।
परीक्षण
एक बार जब आप का निर्माण किया है इंटरफेस आप अपने परीक्षण मॉड्यूल में कुछ सामान क्या करने की जरूरत है ताकि कबाल चला सकते हैं। विशेष रूप से आपको Distribution.TestSuite
और Distribution.TestSuite.HUnit
दोनों आयात करने की आवश्यकता होगी। इसके बाद आपको ह्यूनिट इंटरफ़ेस में प्रदान किए गए फ़ंक्शन का उपयोग करके अपने हनीट टेस्ट को कैबल टेस्ट में कनवर्ट करना होगा। यहां कोड की प्रासंगिक पंक्तियां दी गई हैं:
import qualified Distribution.TestSuite as Cabal
import qualified Distribution.TestSuite.HUnit as CabalHUnit
tests = map (\(x,y) -> CabalHUnit.test x y) [("Login tests", loginTests)]
यही है! आपको cabal configure --enable-tests && cabal build && cabal test
चलाने में सक्षम होना चाहिए और अपने यूनिट परीक्षण पास (या असफल) देखें।
संपादित
संपादित स्पष्ट करने के लिए कि detailed-0.9
इंटरफेस में शामिल है कबाल से स्थापित 0.14.0, नहीं detailed-1.0
।
हालांकि ड्विसन का जवाब अच्छा है, detailed
वर्तमान में अच्छी तरह से समर्थित नहीं है। आप exitcode-stdio-1.0
और Test.Framework
का उपयोग करके के साथ HUnit
पर अंतर कर सकते हैं।
यह सभी सफल और असफल परीक्षण stdout
के साथ-साथ परीक्षण विफल होने पर विफल इमारत को आउटपुट करेगा। मेरा gist देखें।
समाधान एचपी 2012.2 के साथ काम नहीं करता है। 'कैबल - संस्करण 'क्रमश:' 0.14.0' और '1.14.0' दिखाता है, लेकिन' कैबल कॉन्फ़िगरेशन - सक्षम-परीक्षण 'अभी भी कहता है" परीक्षण प्रकार हैं: निकासोड-स्टडीओ-1.0, विस्तृत-0.9 "। तो आधिकारिक '1.14.0' अभी भी' विस्तृत-1.0' के बिना है। – nponeccop
@nponeccop मुझे खेद है कि मेरा समाधान भ्रामक था। मैंने इसे और स्पष्ट होने के लिए संपादित किया है। स्पष्ट होने के लिए, "विस्तृत-1.0" इंटरफ़ेस अभी तक बाहर नहीं है, इसलिए आपको "विस्तृत-0.9" इंटरफ़ेस का उपयोग करना होगा। मुझे अभी तक कुछ भी सामना नहीं हुआ है जो कि 1.0 इंटरफेस में होना चाहिए, न कि 0.9 इंटरफेस, लेकिन वाईएमएमवी। – Dwilson
Google खोज के माध्यम से यहां पहुंचने वाले किसी भी व्यक्ति के लिए: कृपया ध्यान दें कि 'विस्तृत' के बजाय परीक्षण प्रकार 'exitcode-stdio-1.0' का उपयोग करना एक बहुत ही सरल समाधान है। यहां एक कामकाजी उदाहरण है जो 'exitcode-stdio-1.0' और 'HUnit' को जोड़ता है: https://gist.github.com/23Skidoo/8019225 –