Track and display slow specs in Hspec runs.
main :: IO ()
main = do
conf <- configure 1 -- Track specs that take longer than 1s
timedHspec conf $ \it ->
describe "Main" $ do
it "should foo" $ do
threadDelay 3000000
1 `shouldBe` 1
it "should bar" $ do
threadDelay 1000
1 `shouldBe` 1
it "should baz" $ do
threadDelay 4000000
1 `shouldBe` 1
Checkout hspec slow everything to run this on your entire test suite.
Main
should foo
should bar
should baz
Slow examples:
3.002925s: should foo
4.006186s: should baz
Finished in 7.0141 seconds
3 examples, 0 failures
Parallel specs are supported. They are run similarly to above:
timedHspecParallel conf $ \it -> do
-- ...
Output:
Main
should foo
should bar
should baz
Slow examples:
3.005728s: should foo
4.00143s: should baz
Finished in 4.0024 seconds
3 examples, 0 failures
Main.hs
:
module Main where
import qualified Spec
import Test.Hspec.Slow
import Test.Hspec(hspec)
import ClassyPrelude
main :: IO ()
main = do
config <- configure 2
hspec $ timeThese config Spec.spec
Spec.hs
:
{-# OPTIONS_GHC -fno-warn-implicit-prelude #-}
{-# OPTIONS_GHC -F -pgmF hspec-discover -optF --module-name=Spec #-}