Haskell:
Testien kirjoittaminen
Kuinka:
Haskell tukee erilaisia testauskehyksiä, mutta kaksi suosittua ovat Hspec ja QuickCheck. Hspec antaa sinun määritellä ihmislukuisia erittelyjä koodillesi, kun taas QuickCheck antaa sinun automaattisesti generoida testejä kuvailemalla ominaisuuksia, joita koodisi tulisi tyydyttää.
Käyttäen Hspeciä
Ensimmäisenä, lisää hspec rakennustyökalusi konfiguraatioon (esim. stack.yaml tai cabal tiedosto). Sen jälkeen, tuo Test.Hspec ja kirjoita testit eritelmiksi:
-- tiedosto: spec/MyLibSpec.hs
import Test.Hspec
import MyLib (add)
main :: IO ()
main = hspec $ describe "MyLib.add" $ do
it "lisää kaksi numeroa" $
add 1 2 `shouldBe` 3
it "palauttaa ensimmäisen numeron kun lisätään nolla" $
add 5 0 `shouldBe` 5Tämän jälkeen, aja testisi käyttäen rakennustyökaluasi, jolloin saat tuloksen, joka saattaa näyttää tältä:
MyLib.add
- lisää kaksi numeroa
- palauttaa ensimmäisen numeron kun lisätään nolla
Valmis 0.0001 sekunnissa
2 esimerkkiä, 0 epäonnistumisiaKäyttäen QuickCheckiä
QuickCheckin kanssa ilmaiset ominaisuudet, jotka funktiosi tulisi tyydyttää. Lisää QuickCheck projektiisi konfiguraatioon, sitten tuo se:
-- tiedosto: test/MyLibProperties.hs
import Test.QuickCheck
import MyLib (add)
prop_addAssociative :: Int -> Int -> Int -> Bool
prop_addAssociative x y z = x + (y + z) == (x + y) + z
prop_addCommutative :: Int -> Int -> Bool
prop_addCommutative x y = x + y == y + x
main :: IO ()
main = do
quickCheck prop_addAssociative
quickCheck prop_addCommutativeNäiden testien ajaminen autogeneroi syötteitä tarkistamaan määritellyt ominaisuudet:
+++ OK, läpäisi 100 testiä.
+++ OK, läpäisi 100 testiä.Sekä Hspec- että QuickCheck-esimerkeissä, testisarjat toimivat suoritettavina dokumentaatioina, jotka voivat automaattisesti varmentaa koodisi oikeellisuuden.