यहाँ .cabal
फ़ाइल मैं अपने हाल के libraries में से एक के लिए इस्तेमाल किया का एक टुकड़ा है।
...
Library
Build-depends: base >= 4 && < 5, bytestring, directory, filepath, hslogger,
SHA, zlib
Ghc-options: -Wall
Exposed-modules: Ltc.Store
Test-suite reference
Hs-Source-Dirs: Test, .
Main-Is: ReferenceProps.hs
Type: exitcode-stdio-1.0
Build-Depends: base >= 4 && < 5, bytestring, directory, filepath, hslogger,
SHA, zlib
Ghc-Options: -Wall
Build-Depends: test-framework, test-framework-hunit, test-framework-quickcheck2,
HUnit, QuickCheck
जैसा कि हम देख सकते हैं कि कैबल फ़ाइल लाइब्रेरी और टेस्टाइट को परिभाषित करती है। लाइब्रेरी इसे निर्यात किए गए मॉड्यूल को परिभाषित करती है, जिस पैकेज पर निर्भर करता है, और कुछ कस्टम जीएचसी विकल्प सेट करता है।
हम आसानी से बनाने और साथ वितरण के लिए पुस्तकालय पैकेज कर सकते हैं: सबसे पहले, यह पुस्तकालय के रूप में ही निर्भरता (प्रथम Build-Depends
लाइन देखना है:
% cabal configure
% cabal build
% cabal sdist
testsuite पुस्तकालय की तरह एक बहुत लग रहा है), और फिर यह कुछ अतिरिक्त परीक्षण निर्भरताओं को जोड़ता है (दूसरी Build-Depends
लाइन देखें)। यहां परीक्षण परीक्षण हनीट और क्विक चेक परीक्षणों का संयोजन है, और यह धावक के रूप में Test-Framework का उपयोग करता है। परीक्षण उचित Test/ReferenceProps.hs
है। यह exitcode-stdio
प्रकार का परीक्षण है। इसका मतलब है कि कैबल कहेंगे कि परीक्षण ReferenceProps
कोड 0 के साथ निकलते हैं। अन्यथा, यह कहेंगे कि परीक्षण विफल हो गए हैं।
testsuite this तरह लग रहा है (लेकिन, यहाँ, हम सूची बदलाव के लिए कुछ सरल परीक्षण का उपयोग करने के लिए जा रहे हैं):
import Data.Monoid
import Test.Framework
import Test.Framework.Providers.HUnit
import Test.Framework.Providers.QuickCheck2
import Test.HUnit
import Test.QuickCheck
main :: IO()
main = defaultMainWithOpts
[ testCase "rev" testRev
, testProperty "listRevRevId" propListRevRevId
] mempty
testRev :: Assertion
testRev = reverse [1, 2, 3] @?= [3, 2, 1]
propListRevRevId :: [Int] -> Property
propListRevRevId xs = not (null xs) ==> reverse (reverse xs) == xs
main
सिर्फ एक दोहन है। आप mempty
को बदलकर test-framework
के लिए विभिन्न विकल्प भी सेट कर सकते हैं। फ़ंक्शन testRev
एक हनीट परीक्षण है, और propListRevRevId
एक क्विक चेक परीक्षण है; इन्हें लिखने के तरीके पर relevantdocs देखें।
% cabal configure --enable-tests
% cabal test
आप http://www.haskell.org/haskellwiki/How_to_write_a_Haskell_program की जाँच कर दी:
अंत में, हम परीक्षण चला सकते हैं? यह आपके कुछ सवालों का जवाब दे सकता है। –