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` 5
Fü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 Fehler
QuickCheck 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_addCommutative
Das 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.