Haskell:
Scrivere test

Come fare:

Haskell supporta vari framework per i test, ma due popolari sono Hspec e QuickCheck. Hspec ti permette di definire specifiche leggibili per il tuo codice, mentre QuickCheck ti permette di generare automaticamente test descrivendo proprietà che il tuo codice dovrebbe soddisfare.

Usare Hspec

Prima, aggiungi hspec alla configurazione del tuo strumento di costruzione (ad es., stack.yaml o file cabal). Poi, importa Test.Hspec e scrivi i test come specifiche:

-- file: spec/MyLibSpec.hs
import Test.Hspec
import MyLib (add)

main :: IO ()
main = hspec $ describe "MyLib.add" $ do
  it "aggiunge due numeri" $
    add 1 2 `shouldBe` 3

  it "restituisce il primo numero quando si aggiunge zero" $
    add 5 0 `shouldBe` 5

Poi, esegui i tuoi test usando il tuo strumento di costruzione, ottenendo un output che potrebbe assomigliare a:

MyLib.add
  - aggiunge due numeri
  - restituisce il primo numero quando si aggiunge zero

Terminato in 0.0001 secondi
2 esempi, 0 fallimenti

Usare QuickCheck

Con QuickCheck, esprimi proprietà che le tue funzioni dovrebbero soddisfare. Aggiungi QuickCheck alla configurazione del tuo progetto, poi importalo:

-- file: 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

Eseguendo questi test verranno generati automaticamente input per verificare le proprietà specificate:

+++ OK, superato 100 test.
+++ OK, superato 100 test.

In entrambi gli esempi di Hspec e QuickCheck, le suite di test fungono da documentazione eseguibile che può verificare automaticamente la correttezza del tuo codice.