Hspec: A Testing Framework for Haskell

Contents

User's Manual

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

Contents

Other resources