İşte benim son libraries biri için kullanılan .cabal
dosyasının bir parçası. Biz Cabal dosyayı Görüldüğü gibi
...
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
bir kütüphane ve testsuite tanımlar. Kütüphane, ihraç ettiği modülleri, bağlı olduğu paketleri tanımlar ve bazı özel GHC seçeneklerini belirler.
Biz kolayca oluşturup ile dağıtım için kütüphane paketleyebilirsiniz:
% cabal configure
% cabal build
% cabal sdist
testsuite kütüphanesinde çok benziyor: ilk olarak, o kütüphaneye aynı bağımlılıkları (ilk Build-Depends
çizgiyi görüyor vardır) ve daha sonra bazı ek test bağımlılıkları ekler (ikinci Build-Depends
hattına bakın). Testsuit, HUnit ve QuickCheck testlerinin birleşimidir ve koşucu olarak Test-Framework kullanır. Uygun test numarası Test/ReferenceProps.hs
. exitcode-stdio
tip testi. Bu, kablonun ReferenceProps
kod 0'dan çıkması durumunda testlerin geçeceğini söyler. Aksi takdirde, testler başarısız olur.
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
sadece koşum geçerli:
testsuite (biz liste İptallerde bazı basit testler kullanacağız, burada, ama) this benziyor. mempty
'u değiştirerek test-framework
için çeşitli seçenekler ayarlayabilirsiniz. testRev
işlevi bir HUnit sınamasıdır ve propListRevRevId
bir QuickCheck sınamasıdır; Bunların nasıl yazılacağı ile ilgili relevantdocs'a bakın.
% cabal configure --enable-tests
% cabal test
sen http://www.haskell.org/haskellwiki/How_to_write_a_Haskell_program kontrol ettin:
Son olarak, testler uygulayabilirim? Bazı sorularınızı cevaplayabilir. –