Hspec is a testing framework for Haskell. Some of Hspec's distinctive features are:
Here is an example for the impatient:
cabal update && cabal install --package-env=. --lib hspec hspec-contrib QuickCheck HUnit
-- file Spec.hs
import Test.Hspec
import Test.QuickCheck
import Control.Exception (evaluate)
main :: IO ()
main = hspec $ do
describe "Prelude.head" $ do
it "returns the first element of a list" $ do
head [23 ..] `shouldBe` (23 :: Int)
it "returns the first element of an *arbitrary* list" $
property $ \x xs -> head (x:xs) == (x :: Int)
it "throws an exception if used with an empty list" $ do
evaluate (head []) `shouldThrow` anyException
runhaskell Spec.hs Prelude.head returns the first element of a list [✔] returns the first element of an *arbitrary* list [✔] +++ OK, passed 100 tests. throws an exception if used with an empty list [✔] Finished in 0.0005 seconds 3 examples, 0 failures