Haskell:
Skriva tester
Hur gör man:
Haskell stöder olika testramverk, men två populära är Hspec och QuickCheck. Hspec låter dig definiera människoläsbara specifikationer för din kod, medan QuickCheck låter dig generera tester automatiskt genom att beskriva egenskaper som din kod bör uppfylla.
Använda Hspec
Först, lägg till hspec i din byggverktygskonfiguration (t.ex. stack.yaml eller cabal-fil). Importera sedan Test.Hspec och skriv tester som specifikationer:
-- fil: spec/MyLibSpec.hs
import Test.Hspec
import MyLib (add)
main :: IO ()
main = hspec $ describe "MyLib.add" $ do
it "lägger till två nummer" $
add 1 2 `shouldBe` 3
it "returnerar det första numret när noll läggs till" $
add 5 0 `shouldBe` 5Kör sedan dina tester med ditt byggverktyg, vilket resulterar i en output som kan se ut så här:
MyLib.add
- lägger till två nummer
- returnerar det första numret när noll läggs till
Avslutad på 0.0001 sekunder
2 exempel, 0 felAnvända QuickCheck
Med QuickCheck uttrycker du egenskaper som dina funktioner bör uppfylla. Lägg till QuickCheck i din projektinställning, importera den sedan:
-- fil: 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är du kör dessa tester kommer ingångarna att genereras automatiskt för att kontrollera de specificerade egenskaperna:
+++ OK, godkända 100 tester.
+++ OK, godkända 100 tester.I både Hspec- och QuickCheck-exemplen tjänar testsuiterna som exekverbar dokumentation som automatiskt kan verifiera korrektheten i din kod.