Haskell:
Rédaction de tests
Comment faire :
Haskell prend en charge divers cadres de test, mais deux populaires sont Hspec
et QuickCheck
. Hspec vous permet de définir des spécifications lisibles par l’humain pour votre code, tandis que QuickCheck vous permet de générer automatiquement des tests en décrivant des propriétés que votre code devrait satisfaire.
Utiliser Hspec
D’abord, ajoutez hspec
à la configuration de votre outil de build (par exemple, stack.yaml
ou fichier cabal
). Ensuite, importez Test.Hspec
et écrivez des tests comme spécifications :
-- fichier : spec/MyLibSpec.hs
import Test.Hspec
import MyLib (add)
main :: IO ()
main = hspec $ describe "MyLib.add" $ do
it "ajoute deux nombres" $
add 1 2 `shouldBe` 3
it "retourne le premier nombre lors de l'ajout de zéro" $
add 5 0 `shouldBe` 5
Ensuite, exécutez vos tests en utilisant votre outil de build, ce qui donnera un résultat qui pourrait ressembler à :
MyLib.add
- ajoute deux nombres
- retourne le premier nombre lors de l'ajout de zéro
Terminé en 0.0001 secondes
2 exemples, 0 échecs
Utiliser QuickCheck
Avec QuickCheck, vous exprimez des propriétés que vos fonctions devraient satisfaire. Ajoutez QuickCheck
à la configuration de votre projet, puis importez-le :
-- fichier : 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_addCommutatif :: Int -> Int -> Bool
prop_addCommutatif x y = x + y == y + x
main :: IO ()
main = do
quickCheck prop_addAssociative
quickCheck prop_addCommutatif
Exécuter ces tests générera automatiquement des entrées pour vérifier les propriétés spécifiées :
+++ OK, passé 100 tests.
+++ OK, passé 100 tests.
Dans les exemples Hspec et QuickCheck, les suites de tests servent de documentation exécutable qui peut vérifier automatiquement la correction de votre code.