Haskell:
Tests Schreiben
Wie:
Haskell unterstützt verschiedene Test-Frameworks, aber zwei beliebte sind Hspec und QuickCheck. Hspec ermöglicht es Ihnen, menschenlesbare Spezifikationen für Ihren Code zu definieren, während QuickCheck es Ihnen erlaubt, Tests automatisch zu generieren, indem Sie Eigenschaften beschreiben, die Ihr Code erfüllen sollte.
Hspec verwenden
Fügen Sie zuerst hspec zu Ihrer Build-Tool-Konfiguration hinzu (z.B. stack.yaml oder cabal-Datei). Importieren Sie dann Test.Hspec und schreiben Sie Tests als Spezifikationen:
-- Datei: spec/MyLibSpec.hs
import Test.Hspec
import MyLib (add)
main :: IO ()
main = hspec $ describe "MyLib.add" $ do
it "addiert zwei Zahlen" $
add 1 2 `shouldBe` 3
it "gibt die erste Zahl zurück, wenn Null addiert wird" $
add 5 0 `shouldBe` 5Führen Sie dann Ihre Tests mit Ihrem Build-Tool aus, was zu einer Ausgabe führen könnte, die so aussieht:
MyLib.add
- addiert zwei Zahlen
- gibt die erste Zahl zurück, wenn Null addiert wird
Beendet in 0.0001 Sekunden
2 Beispiele, 0 FehlerQuickCheck verwenden
Mit QuickCheck drücken Sie Eigenschaften aus, die Ihre Funktionen erfüllen sollten. Fügen Sie QuickCheck zu Ihrer Projektkonfiguration hinzu und importieren Sie es:
-- Datei: 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_addCommutativeDas Ausführen dieser Tests generiert automatisch Eingaben, um die angegebenen Eigenschaften zu überprüfen:
+++ OK, bestanden 100 Tests.
+++ OK, bestanden 100 Tests.In beiden Beispielen, Hspec und QuickCheck, dienen die Test-Suiten als ausführbare Dokumentation, die die Korrektheit Ihres Codes automatisch überprüfen kann.